(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);
}