单链表逆序
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;
如上代码主要是先保存头部连接的下一节点,置换为当前节点,保存当前节点的下一节点,置换为头部节点的前下一节点。之后利用保存的当前节点的下一节点进行循环置换。
挺简单的,但是当时怎么也理不清道不明,唉,考菜说的就是我这种人吧!
以上是关于单链表逆序的主要内容,如果未能解决你的问题,请参考以下文章