单链表的逆置是一个非常经典的问题,这里利用两个思想进行解决。
首先,我们需要看下原理图,其实两个思想都是一样的,都是使后一个的节点的 next 指针指向前一个节点,依次递推,直到第二个节点指向第一个节点,第一个节点的 next 指针指向 NULL。

第一种方法:
在链表往前走的过程中,记录前一个节点,当前节点和后一个节点,并使当前节点的 next 指针指向前一个节点,直到最后一个节点指向倒数第二个节点
算法实现如下:
void reverse_list(LinkList list){ LinkedNode *pre = list; LinkedNode *cur = list->next; LinkedNode *next = NULL; if(list == NULL || list->next == NULL) return; /*在这里实现翻转*/ while(cur != NULL) { next = cur->next; cur->next = pre; pre = cur; cur = next; } list->next = NULL; list = pre; print(list); return;}
&nbs

本文介绍了如何使用C语言实现单链表的逆置,包括两种不同的方法:一种是通过记录前一个、当前和后一个节点来改变next指针;另一种是采用递归的方式,从尾到头逆置链表。同时,文中还推荐了一位老师的人工智能教程。
最低0.47元/天 解锁文章
3354

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



