标签:pre ListNode cur 指向 206 List next 节点 Reverse
一、问题
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、解决
设置指向当前节点为cur,指向当前节点的下一个节点为next和指向当前节点的前一个节点pre
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 public: 11 ListNode* reverseList(ListNode* head) { 12 ListNode* pre=NULL; 13 ListNode* cur=head; // 声明个指针指向当前元素,初始指向head头节点 14 while(cur!=NULL){ // 如果当前节点元素不为空 15 ListNode* next=cur->next; // 声明个next指针指向 当前节点的下一个节点 16 17 cur->next=pre; // 将 cur下一个节点指向 cur的前一个结点。实现反转 18 pre=cur; // pre指针指向cur现在的位置 19 cur=next; // cur 指向 next 指向的位置 20 } 21 return pre; // 循环结束后cur指向的是空结点,则cur的前一个节点则为反转后新的头节点 22 23 } 24 };
时间复杂度O(n)。 只开了三个指针的控件,空间复杂度 O(1)
代码参考:https://github.com/liuyubobobo/Play-Leetcode
标签:pre,ListNode,cur,指向,206,List,next,节点,Reverse 来源: https://www.cnblogs.com/guo7533/p/11180703.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。