鍊錶 迴圈右移鍊錶的後K個結點

2021-07-11 17:04:51 字數 718 閱讀 2623

題目:輸入k和鍊錶的頭結點,迴圈右移鍊錶的後k個結點。

for example:

given1->2->3->4->5->nulland 

k=2,

return4->5->1->2->3->null.

思路:1.首先要找鍊錶的倒數第k個結點;

2.因迴圈右移的k個結點仍是按原來順序排列,可考慮用乙個先進先出的容器

即佇列將

後k個結點

儲存,依次連線在鍊錶首處;

3.但此解法空間複雜度為o(k);

4.將鍊錶首尾相接成環,然後在第k個結點前的結點處斷開即可;

因leetcode上測試用例中的k有大於length of list 的情況,故要先遍歷一遍然後使k=k%(length of list),

時間複雜度仍為o(n).

**如下:

/*** definition for singly-linked list.

* public class listnode

* }*/public class solution

n=n%count;

if(0 == n)

return head;

listnode first=head;

listnode second=head;

//先找到倒數第n個結點;

int num=1;

while(num

帶頭結點迴圈鍊錶

上乙個說的是單鏈表,其實迴圈鍊錶跟單鏈表類似,單鏈表最後乙個節點 p 的next域為null即p next null而迴圈鍊錶 plist 的則為頭結點的位址,即p next plist。其餘的基本操作和單鏈表幾乎一樣,僅僅是單鏈表迴圈結束條件為 null,而迴圈鍊錶是 plist。基本操作為 初始...

鍊錶2 鍊錶中倒數第k個結點

題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。k從1開始 思路 所謂輸入乙個鍊錶是指輸入乙個頭結點這個輸入的結點必然是含有next指標的物件,於是之後的多個結點相互連線形成乙個鍊錶。倒數第k個結點,也就正數第k n 1個結點,只需要遍歷鍊錶,返回第k n 1個結點即可 但是此時由於n是不知道的,為...

鍊錶 帶頭結點的雙向迴圈鍊錶

還需改進 creat node這個函式應有返回型別,來判斷新建結點是否成功,不然主函式中不管成不成功都會訪問該節點成員。改了這個函式,在主函式中create node後要判斷是否成功,不成功就提示並退出函式,退出前別忘了還要釋放鍊錶!同時create link這個函式中也要判斷head是否申請成功,...