在資料結構這一方面,鍊錶這塊容易搞混的是它的指標。
下面的演算法為刪除單鏈表倒數第k個結點,所有的步驟解析都在**裡說明了。
/*** 刪除單鏈表的倒數第
k個結點.*/
//結點定義
classnode
}public classremotelastedkthnode
node node = head;
//遍歷一遍鍊錶,得到
k--最後的值
while(node !=null)
//如果k>0,說明k
的值大於鍊錶的長度,直接返回
head
if(k > 0)else if(k == 0)else
cur.next= next.next;
next.next=null;
returnhead;}}
}
刪除單鏈表的倒數第k個結點
策略 直接遍歷總數為len,再次遍歷第len k 1個就是答案,但是這樣遍歷了o n k 個,可以在o在更短的時間內找到 圖示 參考 include using namespace std typedef struct listnode listnode void createlist listno...
刪除單鏈表的倒數第k個結點
策略 直接遍歷總數為len,再次遍歷第len k 1個就是答案,但是這樣遍歷了o n k 個,可以在o在更短的時間內找到 圖示 參考 include using namespace std typedef struct listnode listnode void createlist listno...
刪除單鏈表倒數第K個節點
有p1,p2兩個指標,p1從頭開始跑,先跑k個節點,然後p2開始跑,當p1跑到頭時,p2指向的就是倒數第k個節點了。這道題的思路比較簡單,要想做得更好,可以加入一些魯棒性的考慮,比如說空鍊錶情況,鍊錶長度小於k等。下面是 include struct node class solution if k...