leetcode 反轉鍊錶(C語言解答)

2021-08-30 21:53:21 字數 1010 閱讀 8289

反轉乙個單鏈表。

示例:

輸入:1->2->3->4->5->null輸出:5->4->3->2->1->null
高階:你可以迭代或遞迴地反轉鍊錶。你能否用兩種方法解決這道題?

受雙指標思想的啟發,我這次使用了三指標思想,最前面的指標負責探路,後面的倆指標完成逆序的變換!

但要注意特殊情況:1.鍊錶為空  2.鍊錶只有乙個值  3.鍊錶只有兩個值

/**

* definition for singly-linked list.

* struct listnode ;

*/struct listnode* reverselist(struct listnode* head)

//鍊錶長度大於或等於3

m=p;

p=p->next;

q=p;

p=p->next;

m->next=null;

q->next=m;

while(p->next!=null)

p->next=q;

return p;

}

效率上:比較低效! 

雙指標,思路和三指標思想差不多,但需引入中間變數指標temp!

/**

* definition for singly-linked list.

* struct listnode ;

*/struct listnode* reverselist(struct listnode* head)

while(p!=null) //一直迭代到鏈尾

return new;

}

leetcode 鍊錶反轉 c語言實現

反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null使用迭代方法,如下 definition for singly linked list.struct listnode struct listnode reverselist struct listnode ...

LeetCode 反轉鍊錶

反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null高階 你可以迭代或遞迴地反轉鍊錶。你能否用兩種方法解決這道題?思路 雙指標,先用乙個指標算出鍊錶結點個數n,每次快指標從頭往先前移動n 步,慢指標往前移動1步進行交換即可。definition for sin...

LeetCode 反轉鍊錶

反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 思路分析 直接一趟掃瞄即可。方法二 遞迴 definition for singly linked list.struct listnode class solution listnode reversea...