C 返回單鏈表的第k個結點

2021-07-05 05:55:07 字數 557 閱讀 4357

返回單鏈表的第k個結點,雙指標可以很好地解決這個問題:

listnode* findkthtotail(listnode* plisthead, unsigned k)

pbehind = plisthead;

while( pahead->next != null)

return pbehind;

}

但是這段**沒有檢查輸入合法性,如果輸入的是鍊錶是null,程式崩潰;如果鍊錶個數小於k,程式同樣會因為在for迴圈裡指向空指標而崩潰;如果輸入的k為0,k-1得到將不是-1,而是無符號的0xffffffff,那麼程式將迴圈這麼多次,同樣會崩潰。

考慮健壯性的**應該是這樣:

listnode* findkthtotail(listnode* plisthead, unsigned k)

} pbehind = plisthead;

while( pahead->next != null)

return pbehind;

}

Leetcode 返回單鏈表的倒數第k個節點

題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。測試用例 輸入 1,輸出 思路 判斷引數的合法性 定義fast和slow節點分別指向頭結點 當fast.next null,fast先走k 1步 當fast.next null,fast和slow一起走,最終返回slow 如下 class list...

返回單鏈表的倒數第n個節點

struct list node struct list node next void data struct list node get last nth node struct list node head,unsigned int pos struct list node ret head u...

返回單鏈表的倒數第n個節點

struct list node 這個函式的名字起得不是特別的好。功能就是返回單鏈表倒數第n個節點。引數說明 struct list node head 單鏈表頭指標 unsigned int pos 倒數的個數 struct list node get last nth node struct l...