206. Reverse Linked List
来源:互联网 发布:nba2k15mc霍华德的数据 编辑:程序博客网 时间:2024/05/16 08:57
快慢指针是链表中常用的技巧,反转链表也是常用算法之一。
使用p和q两个指针配合工作,使得两个节点间的指向反向,同时用r记录剩下的链表。
p = head;
q = head->next;
head->next = NULL;
现在进入循环体,这是第一次循环。
r = q->next;
q->next = p;
p = q;
q =r;
第二次循环。
r = q->next
q->next = p;
p = q;
q = r
第三次循环。。。。。
具体代码如下:
class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* pre = NULL; while (head) { ListNode* next = head -> next; head -> next = pre; pre = head; head = next; } return pre; }};
反转链表还可以采用头插法
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) { //头插法 if(!head || !head->next) return head; ListNode* dummy = new ListNode(-1); dummy->next = head; ListNode* pre = head; ListNode* cur = head->next; while(cur){ pre->next = cur->next; cur->next = dummy->next; dummy->next = cur; //插入头部 cur = pre->next; } return dummy->next; }};
也可以采用递归方法实现
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) { if(!head || !head->next) return head; ListNode* new_head = reverseList(head->next); head->next->next = head; head->next = NULL; return new_head; }};
0 0
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse (Linked List)
- 第二周项目-就拿胖子说事
- iOS7.0 iphone5边界黑框的问题
- 有关HealthKit的那些事
- HDU杭电5630 ( Rikka with Chess )
- Grunt学习——检查代码完整性
- 206. Reverse Linked List
- DocumentHelper和SAXReader解析XML字符串
- C# chart 属性
- MySQL数据库复制概念及数据库架构不断扩展方案
- JS nodeType返回类型
- 第二周项目2-就拿胖子说事
- 搜索引擎入门
- CodeForces 630A:Again Twenty Five!【水】
- Web前端开发-11