单链表逆序

Posted Z上善若水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单链表逆序相关的知识,希望对你有一定的参考价值。

  最近经常碰到让写链表逆序的命题,但是我总是粗心大意漏掉内容,造成结果是痛苦和迷茫:

 1 void SWapNow(Node* p)
 2 {
 3     Node* pCur = p->pNext;
 4     p->pNext = NULL;
 5     Node* pTemp = NULL;
 6     Node* pPre = NULL;
 7     while (NULL != pCur)
 8     {
 9         pPre = p->pNext;
10         p->pNext = pCur;
11         pTemp = pCur->pNext;
12         pCur->pNext = pPre;
13         pCur = pTemp;
14     }
15 }

  如上代码,为头插法,第4行内容没有的话,链表在第一节点陷入死循环,造成空间不足的bug;

  如上代码主要是先保存头部连接的下一节点,置换为当前节点,保存当前节点的下一节点,置换为头部节点的前下一节点。之后利用保存的当前节点的下一节点进行循环置换。

  挺简单的,但是当时怎么也理不清道不明,唉,考菜说的就是我这种人吧!

以上是关于单链表逆序的主要内容,如果未能解决你的问题,请参考以下文章

2.设计一个算法,将单链表中结点以逆序排列。逆序的单链表中的结点均为原表中的结点

数据结构——20 单链表逆序

数据结构——20 单链表逆序

算法与数据结构单链表的增删改查逆序打印与输出合并有序链表

算法习题---线性表之单链表逆序打印

线性表练习之Example012-逆序打印单链表