反轉鍊錶。請使用一趟掃瞄完成反轉。
public
static
void
main
(string[
] args)
private
static node reverse
(node head)
node previous = null;
//將null節點當作head的上一節點
node current = head, next;
while
(current != null)
return previous;
}
反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。
1 ≤ m ≤ n ≤ 鍊錶長度。
輸入: 1->2->3->4->5->null, m = 2, n = 4
輸出: 1->4->3->2->5->null
思路:使用迭代的方式,通過使用兩個 node 來標記反轉鍊錶的頭和尾,大體思路和反轉鍊錶時一致,且該方法空間複雜度較低為o( 1 ),時間複雜度為o( n )。
public
static
void
main
(string[
] args)
private
static node reversebetween
(node head,
int startindex,
int endindex)
node previous = null,next=null, endpre, start;
//雙指標記錄起始的兩個節點的前節點
endpre = current;
//開始反轉的前乙個節點
start = current = current.nextnode;
//反轉的頭節點
while
(startindex != endindex+1)
//將反轉的起點的下一節點指向
start.nextnode = current;
endpre.nextnode = previous;
return nullnode.nextnode;
}
反轉鍊錶與分組反轉鍊錶
經典的反轉鍊錶,先上 public class listnode public class printlist system.out.println public class reverse public listnode reverse listnode root listnode pre nul...
鍊錶 反轉鍊錶
問題 兩兩交換鍊錶中的節點 問題 k 個一組翻轉鍊錶 問題鏈結 利用棧先進後出的特性,遍歷鍊錶,將每個結點加入棧中,最後進行出棧操作,先出棧的結點指向臨近的後出棧的結點。definition for singly linked list.struct listnode class solution ...
鍊錶 鍊錶反轉I
package com.hnust.reversal public class listnode public listnode int value,listnode next override public string tostring 我們可以通過把鍊錶中鏈結節點的指標反轉過來,從而改變鍊錶的...