链表逆置

来源:互联网 发布:自学 java c python 编辑:程序博客网 时间:2024/06/05 00:12

题目:给出一个链表和一个数k,比如链表1→2→3→4→5→6,逆置后6→5→43→2→1


分析:

因为单链表只能找到next节点,不能找到prev节点,所以必须借助辅助指针来保存原来链表的状态。


我们可以把过程分成下面几步:

1)pNext 保存 pHead->next 2)pHead->next 指向 pPre 3)pPre 指向 pHead保存原来的上一个节点  4)pHead指向pNext继续遍历链表

重复这几步直到pHead指向NULL:


Node* ReverseList(Node* pHead){Node* pPre = NULL;/*pHead遍历链表*/while (pHead != NULL){Node* pNext = pHead->_pNext;/*保存修改前的next节点*/pHead->_pNext = pPre;pPre = pHead;/*保存修改前的prev节点*/pHead = pNext;}/*此时pHead为空,pPre指向原来的最后一个节点,就是新的头结点*/return pPre;}


原创粉丝点击