面试题19——怎样把一个单链表反序

(1)反转一个链表。循环算法:

List reverse(List n)
{
	if(!n)					//判断链表是否为空,为空退出
	{
		return n;
	}
	list cur=n.next;       //保存头结点的下个节点
	list pre=n;				//保存头结点
	list tmp;
	pre.next=NULL;         //头结点的指针指空,转换后变尾结点;
	while(NULL!=cur.next)  //循环直到cur.next为空
	{
		tmp=cur;
		tmp.next=pre;
		pre=tmp;
		
		cur=cur.next
	}
	return tmp; //返回头指针
}

(2)反转一个链表,递归算法:

List*reverse(List*oldList,List*newHead=NULL)
{
	List*next=oldList->next;
	oldList->next=newHead;
	newHead=oldList;

	return(next==NULL)?newHead:reverse(t,newHead);
}
    原文作者:一步两步先生
    原文地址: https://blog.csdn.net/weixin_42323413/article/details/84892016
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞