反转链表,(5) 浅浅的花香味﹌ 2022-06-09 10:08 58阅读 0赞 实现链表的反转,比如原来是 1->2->3->4->5;翻转后就是 5->4->3->2->1, ![Center][] 思路是:首先定义pNode指向头结点,pRrev指向NULL,pNext指向NULL,在链表非NULL的情况下,让 pNext = pNode->m\_pNext; 也就是pNext指向了第二个节点,这时候如果pNext ==NULL了,说明已经到达了原链表的尾部节点,否则执行第一次反转,(1)pNode->m\_pNext = pPrev;让第一个节点的m\_pNext指向NULL,这时候pPrev还是NULL的。(2)pPrev = pNode;让pRrev指向第一个节点(2)pNode = pNext;pNode后移一个节点,接着如果pNode不为NULL,执行第二次循环。第二次循环会反转第二个节点,一次类推。 ListCommon.h 依赖: [链表基本操作的函数实现。(1)][1] #include <iostream> #include "ListCommon.h" using namespace std; ListNode* reversedListNode(ListNode* pHead){ if(pHead == NULL) return NULL; ListNode* pReversedHead = NULL; ListNode* pNode = pHead; ListNode* pNext = NULL; ListNode* pPrev = NULL; cout << "original list:"<<endl; PrintList(pHead); while(pNode != NULL){ pNext = pNode->m_pNext; //pNext等于null,说明已经到达尾部, if(pNext == NULL){ pReversedHead = pNode; } //开始处理反转,第一次循环,反转第一个节点,第二次反转第二个节点... pNode->m_pNext = pPrev; pPrev = pNode; pNode = pNext; } cout << "reversed list:"<<endl; PrintList(pReversedHead); return pReversedHead; } int main(int argc, char* args[]){ ListNode* pNode1 = CreateListNode(1); ListNode* pNode2 = CreateListNode(2); ListNode* pNode3 = CreateListNode(3); ListNode* pNode4 = CreateListNode(4); ListNode* pNode5 = CreateListNode(5); ConnectListNodes(pNode1,pNode2); ConnectListNodes(pNode2,pNode3); ConnectListNodes(pNode3,pNode4); ConnectListNodes(pNode4,pNode5); reversedListNode(pNode1); DestoryList(pNode1); return 0; } 测试结果: PC:~/algorithm$ g++ ListCommon.cpp ReversedList.cpp -o ReversedList PC:~/algorithm$ ./ReversedList original list: print list begin --- 1 2 3 4 5 print list end reversed list: print list begin --- 5 4 3 2 1 print list end [Center]: /images/20220609/e042d1e490c0443c98bb7abb5c8d285f.png [1]: http://blog.csdn.net/lin20044140410/article/details/77658778
相关 反转链表 > [剑指Offer 24 反转链表 \[easy\] ][Offer 24 _ _easy_] > ![在这里插入图片描述][watermark_type_ZmFuZ3p 曾经终败给现在/ 2022年12月27日 01:21/ 0 赞/ 249 阅读
相关 反转链表 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ub 「爱情、让人受尽委屈。」/ 2022年11月29日 12:40/ 0 赞/ 225 阅读
相关 反转链表 / 反转链表 给一条单链表,请反转整个链表,并返回反转后的链表 / public class Test5 { / 这个递归函数的定 àì夳堔傛蜴生んèń/ 2022年10月29日 01:50/ 0 赞/ 277 阅读
相关 反转链表 代码: // by nby \include<iostream> using namespace std; struct node \{ int 以你之姓@/ 2022年08月07日 07:37/ 0 赞/ 266 阅读
相关 反转链表 题目 给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4;如果K为4,则输出 た 入场券/ 2022年07月28日 01:12/ 0 赞/ 270 阅读
相关 反转链表,(5) 实现链表的反转,比如原来是 1->2->3->4->5;翻转后就是 5->4->3->2->1, ![Center][] 思路是:首先定义pNode指向头结点,pRrev指 浅浅的花香味﹌/ 2022年06月09日 10:08/ 0 赞/ 59 阅读
相关 链表反转 public class LinkedListReverse { public static void main(String[] args) { £神魔★判官ぃ/ 2022年05月24日 08:05/ 0 赞/ 327 阅读
相关 反转链表 题目描述 输入一个链表,反转链表后,输出新链表的表头。 链表的数据结构如下: public class ListNode { int val; 浅浅的花香味﹌/ 2022年05月13日 22:45/ 0 赞/ 337 阅读
相关 反转链表 [反转链表][Link 1] 题目描述 输入一个链表,反转链表后,输出新链表的表头。 1 public class Solution { 心已赠人/ 2022年03月25日 15:26/ 0 赞/ 304 阅读
相关 反转链表 时间限制:1秒 空间限制:32768K 热度指数:408664 本题知识点: 链表 算法知识视频讲解 题目描述 输入一个链表,反转链表后,输出新链表的表头。 妖狐艹你老母/ 2022年03月10日 01:30/ 0 赞/ 314 阅读
还没有评论,来说两句吧...