[LeetCode 206]Reverse Linked List反転単鎖表
4062 ワード
この問題は与えられたシングルチェーン表を反転させることを要求しています.学校の面接の手がコードを引き裂く過程の高周波問題です.シングルチェーン表のこの一番簡単なデータ構造に対する理解をよく調べられます.反復と再帰の2つの方法を使用して、与えられた単一チェーンテーブルを反転させることができ、具体的には以下のように実現される.
1 class Solution {
2 public:
3 ListNode* reverseList(ListNode* head) {
4 return reverseList_iteratively(head);
5 //return reverseList_recursively(head);// leetcode
6 }
7 //
8 ListNode* reverseList_iteratively(ListNode* head)
9 {
10 ListNode* p = nullptr;
11 ListNode* w = nullptr;
12 while(head)
13 {
14 p = head->next;
15 head->next = w;
16 w = head;
17 head = p;
18 }
19 return w;
20 }
21
22 //
23 ListNode* reverseList_recursively(ListNode* head)
24 {
25 if(head==nullptr||head->next==nullptr)
26 {
27 return head;
28 }
29 ListNode* h = reverseList_recursively(head->next);
30 head->next->next=head;//
31 head = nullptr;
32 return h;
33 }
34 };