輸入乙個鍊錶,輸出該鍊錶中倒數第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 ...