演算法題 翻轉鍊錶中的一段

2022-09-01 15:12:18 字數 489 閱讀 7430

題目:給出乙個鍊錶中的兩個指標p1和p2,將其之間的結點翻轉。

思路:可以通過交換結點內的值來實現結點的翻轉,空間為o(n);

如果要求不能交換值,那麼僅憑p1和p2是無法翻轉的,因為不知道p1之前的節點,會掉鏈,只能翻轉p1之後的鍊錶,這個過程就類似於給定乙個頭節點,翻轉之後的鍊錶了;可以使用頭插法。

**

交換值:

1

struct

listnode 2;

67void reversenodes(listnode *p1, listnode *p2)

1617

int i = 0, j = nodes.size() - 1;18

while ( i19 swap(nodes[i++]->val, nodes[j--]->val);

20 }

翻轉鍊錶中的一段

92 給你單鏈表的頭節點 head 和兩個整數 left 和 right 其中 left right 請你反轉從位置 left 到位置 right 的鍊錶節點,返回 反轉後的鍊錶 鍊錶 翻轉 從中間指定位置,之前做過類似的 迭代法 3步 1 儲存當前節點的後乙個節點,2 後項指前項 3 前進 左邊賦...

反轉鍊錶與反轉鍊錶中的某一段

反轉鍊錶。請使用一趟掃瞄完成反轉。public static void main string args private static node reverse node head node previous null 將null節點當作head的上一節點 node current head,nex...

鍊錶 (翻轉鍊錶)的兩種演算法

coding utf 8 author leadingme mail leadingme qq.com mywebsite leadingme.top 翻轉鍊錶 演算法要求 翻轉乙個單鏈表 不帶頭節點 示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null def revers...