1 5將單鏈表向右旋轉k個結點

2021-10-05 22:04:10 字數 859 閱讀 6826

如何將單鏈表向右旋轉k個位置。

給定單鏈表1->2->3->4->5->6->7, k = 3,那麼旋轉後的單鏈表變為5->6->7->1->2->3->4

public

class

sort

// 前部分有k+1個結點,後半部分有k個結點

// 所以使用快慢指標移動是可以的,之間維持k個結點

node slow, fast, tmp;

slow = fast = head.next;

// 1.先將fast移動到第k個位置

for(

int i =

1; i <= k; i++

)else

}// 2.slow和fast同步移動,fast移動到尾結點時,slow正好

while

(fast.next != null)

// 3.開始連線結點

tmp = slow.next;

slow.next = null;

fast.next = head.next;

head.next = tmp;

}public

static

void

main

(string[

] args)

// 向右旋轉

rightrotate

(head,3)

;for

(cur = head.next; cur != null; cur = cur.next)

}}

1.首先找到鍊錶的倒數第k+1個結點slow和尾巴結點fast

2.將鍊錶斷開成兩個子鍊錶,其中後半部分的子鍊錶的結點個數為k

將單鏈表的每K個結點逆序

簡單做法,直接使用棧儲存那k個結點,然後將這k個結點逆序後連線到鍊錶上去,只需要注意頭節點即可。高階解法直接對鍊錶進行處理,每一次記錄當前逆序分組的第乙個結點和最後乙個結點,也需要考慮頭節點 解法 使用棧 直接對鍊錶進行迭代 普通 public static node reverseknode1 n...

查詢單鏈表的第k個結點

題目 輸入乙個單向鍊錶,輸出該鍊錶中倒數第 k個結點。鍊錶的倒數第 0個結點為鍊錶的尾指標。鍊錶結點定義如下 struct listnode 解析 方案一 可以對單鏈表來個逆置,然後再取逆置後的單鏈表的第k個元素。但是這樣,在逆置的過程中涉及到大量的插入和刪除的工作,實為不佳的方案。方案二 可以先求...

刪除單鏈表倒數第k個結點

在資料結構這一方面,鍊錶這塊容易搞混的是它的指標。下面的演算法為刪除單鏈表倒數第k個結點,所有的步驟解析都在 裡說明了。刪除單鏈表的倒數第 k個結點.結點定義 classnode public classremotelastedkthnode node node head 遍歷一遍鍊錶,得到 k 最...