public static class listnode
解題思路:
為了實現只遍歷鍊錶一次就能找到倒數第k 個結點,我們可以定義兩
個指標。第乙個指標從鍊錶的頭指標開始遍歷向前走k-1步,第二個指標保持不動;從第k 步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k-1 , 當第乙個(走在前面的)指標到達鍊錶的尾結點時,第二個指標(走在後面的)指標正好是倒數第k 個結點。
**實現:
public class test15
/*** 輸入乙個鍵表,輸出該鍊錶中倒數第k 個結點.為了符合大多數人的習慣,
* 本題從1開始計數,即鍊錶的尾結點是倒數第1個結點.例如乙個鍊錶有6個結點,
* 從頭結點開始它們的值依次是1、2、3、4、5 6。這個鍊錶的倒數第3個結點是值為4的結點.
** @param head 鍊錶的頭結點
* @param k 倒數第k個結點
* @return 倒數第k個結點
*/public static listnode findkthtotail(listnode head, int k)
// 指向頭結點
listnode pointer = head;
// 倒數第k個結點與倒數第乙個結點相隔k-1個位置
// pointer先走k-1個位置
for (int i = 1; i < k; i++)
// 已經沒有節點了,但是i還沒有到達k-1說明k太大,鍊錶中沒有那麼多的元素
else
}// pointer還沒有走到鍊錶的末尾,那麼pointer和head一起走,
// 當pointer走到最後乙個結點即,pointer.next=null時,head就是倒數第k個結點
while (pointer.next != null)
// 返回結果
劍指offer 題15(反轉鍊錶)
反轉鍊錶 輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。coding utf 8 class listnode def init self,x self.val x self.next none class solution 返回listnode defreverselist self,phead w...
15 劍指offer 反轉鍊錶
輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。分析 1 2 3 4 5 1 2 3 4 5 而且這個題難在沒有頭節點 第一種方法是 非遞迴方法 struct listnode class solution return preversehead 第二種方法是 遞迴方法 struct listnode ...
15 反轉鍊錶(劍指offer)
15.反轉鍊錶 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。1.思路 這裡可以採用輔助指標的方式來進行歷求解,以下面的鍊錶為例具體分析如下 1 首先我們需要定義三個指標,分別指向當前結點 cur 前一結點 prev 後一節點 next 2 然後開始從前往後進行遍歷,在遍歷的過程中對指標進行反轉 第...