單鏈表的倒數第K個節點

2021-08-06 04:12:31 字數 494 閱讀 9305

思路:建立兩個迭代器,乙個迭代器quick,乙個迭代器slow,quick沿鍊錶,先行k步,然後和slow一起行進,直至quick到達鍊錶尾端,此時slow對應的資料,就是倒數第k個節點。

#include #include#includeusing namespace std;

listchange(vector&a)

return list;

}int get(listlis,int num)

if (i != num) return -1;

while (quick != lis.end())

return *slow;

}int main()

; listlis = change(data);

cout << get(lis,1);

system("pause");

return 0;

}

刪除單鏈表倒數第K個節點

有p1,p2兩個指標,p1從頭開始跑,先跑k個節點,然後p2開始跑,當p1跑到頭時,p2指向的就是倒數第k個節點了。這道題的思路比較簡單,要想做得更好,可以加入一些魯棒性的考慮,比如說空鍊錶情況,鍊錶長度小於k等。下面是 include struct node class solution if k...

單鏈表查詢倒數第K個節點

分析 p q兩個指標指向表頭結點,p向前移動k個位置後q向前移動,當p結點移到尾結點時,q的next指標域所指結點即為所求結點 若不存在k個結點,則當p指向尾結點時,k不為0。include include typedef struct node node,linklist linklist cre...

輸出單鏈表的倒數第K個節點

求解單鏈表第k個節點或者倒數第k個節點總是乙個o n 的問題!一般的求解倒數第k個問題是轉換為求解第n k個節點的問題,這樣需要求出鍊錶總長n,實際上可以做的更好!求解倒數第k個節點更好的一種做法是不求解鍊錶長度,使用乙個指標指向第k個節點,另乙個指標指向第乙個節點,兩個指標同步移動,當第乙個指標移...