c 之單鏈表的三種反轉

2021-10-06 17:01:23 字數 1717 閱讀 9252

在刷leetcode題時,鍊錶的反轉可分三種情況:

1、反轉整個鍊錶

2、反轉其中連續的一部分

3、分段反轉

一、反轉整個鍊錶

leetcode206. 反轉鍊錶

示例:

輸入: 1->2->3->4->5->null

輸出: 5->4->3->2->1->null

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

return cur;}}

;

二、反轉單鏈表其中連續的一部分

leetcode92. 反轉鍊錶 ii

反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。

說明:1 ≤ m ≤ n ≤ 鍊錶長度。

示例:輸入: 1->2->3->4->5->null, m = 2, n = 4

輸出: 1->4->3->2->5->null

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

mnode-

>next=cur;

return dummy-

>next;}}

;

三、分段反轉

給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。

k 是乙個正整數,它的值小於或等於鍊錶的長度。

如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。

示例:給你這個鍊錶:1->2->3->4->5

當 k = 2 時,應當返回: 2->1->4->3->5

當 k = 3 時,應當返回: 3->2->1->4->5

可使用

二、反轉單鏈表其中連續的一部分來求解:

單鏈表實現反轉的三種方法

單鏈表的操作是面試中經常會遇到的問題,今天總結一下反轉的幾種方案 1 兩兩對換 2,放入陣列,倒置陣列 3,遞迴實現 如下 include include typedef struct node node,pnode pnode createnode phead pnext null int n p...

單鏈表逆序(三種方式)

三種方式實現單鏈表的逆序,分別是頭結點插入,對稱交換和利用堆疊來實現。三種方式分別是出於空間和時間的考慮來實現的,詳見注釋。public class linkedlist public node object data,node next public node getnext public voi...

C 演算法之 反轉單鏈表

題目 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點,鍊錶節點定義為 struct listnode int m nvalue listnode m pnext 演算法思路 鍊錶 1 2 3 4 5 建立乙個 pprev節點,而且為空節點 pprev null 再建立乙個節點...