思路:
1.找到头结点
2.依次遍历每个结点,并且每次都插到第一个结点之后
3.头结点.next = NULL;称为尾节点
循环方式代码实现:
List func(List head)
{
if(!head) //如果为空链表,无须操作
{
return head;
}
List pre = head; //把头结点给了pre
List cur = pre.next;
List tmp; //定义一个结点以便循环幅值使用
pre.next = NULL; //将首结点的next置空,循环结束后,成为尾结点
while(NULL != cur) //一直循环,直到遇见尾结点
{
//以下三条代码,将当前结点插到头结点之前
tmp = cur;
tmp.next = pre;
pre = tem;
cur = cur.next; //遍历每个结点
}
return pre; //返回头结点
}
如有错误请大家提出,明天写递归方式的实现。
递归算法的实现:
List *func(List *oldList,List *newHead = NULL)
{
List *next = oldList->next;
oldList->next = newHead;
newHead = oldList;
return (next == NULL)?newHead:func(t,newHead);
}
本文详细解析了链表逆序算法的两种实现方式:循环和递归。首先介绍了通过循环方式实现链表逆序的具体步骤及代码实现,然后给出了递归算法的实现方法。这些方法对于理解链表的基本操作及其应用场景非常有帮助。

539

被折叠的 条评论
为什么被折叠?



