22 劍指offer 鍊錶中倒數第K個結點

2021-08-18 20:42:28 字數 350 閱讀 3617

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。

思路:假設鍊錶的總結點個數為n,倒數第k個結點即正數第n-k+1=n-(k-1)個結點。如何在一次遍歷的情況下就找到倒數第k個結點呢?

方法:定義兩個指標,p和q,讓p先走k-1步,剩下n-(k-1)步即到達終點,同時這n-(k-1)步也是正著走能找到倒數第k個結點的步數。

所以當p到達終點的時候,q到達的結點即為所求。

**:在沒有特殊宣告時,均將plisthead看作是鍊錶的第乙個結點

class solution 

while(p->next)

return q;

}};

劍指 Offer22鍊錶 鍊錶中倒數第k個節點

題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個節點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾節點是倒數第1個節點。例如,乙個鍊錶有6個節點,從頭節點開始,它們的值依次是1 2 3 4 5 6。這個鍊錶的倒數第3個節點是值為4的節點。示例 給定乙個鍊錶 1 2 3 4 5,和 k 2.返回鍊錶...

劍指offer 22 鍊錶中倒數第K個結點

這道題的題目可以描述為 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。typedef int datatype typedef struct listnode listnode 初始化 void listinit listnode ppfirst 這道題的普通解題思路分為三步 1.定義兩個指標forwa...

劍指offer 22 鍊錶中倒數第k個節點

輸入乙個鍊錶,輸出該鍊錶中倒數第k個節點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾節點是倒數第1個節點。例如,乙個鍊錶有6個節點,從頭節點開始,它們的值依次是1 2 3 4 5 6。這個鍊錶的倒數第3個節點是值為4的節點。示例 給定乙個鍊錶 1 2 3 4 5,和 k 2.返回鍊錶 4 ...