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

2021-07-10 16:12:13 字數 961 閱讀 8486

1,問題:

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

2,想法都在**裡標註了:

/*

struct listnode

};*/

class solution

int count = 0;

listnode* temp = plisthead;

while (plisthead)

int m = count - k;

//倒數第k個,是順數第count - k +1個

if (m < 0)

else

return temp;}*/

//思路2:倒數第k個位置,是順數第n-k+1個位置

//設兩個指標都指向頭結點,那麼第乙個指標走k-1步到達順數第k位置

//然後第二個指標和第乙個指標一起走n-k步,即訪問完鍊錶,就到達了

//n-k+1位置,即倒數第k位置

if(plisthead == null || k <= 0)

listnode* temp1 = plisthead;

listnode* temp2 = plisthead;

//下邊for迴圈的意思:

//若i滿足for迴圈條件,表示還要往下走

//但是temp1->next如果等於空,就說明下邊沒有節點了,

//說明k比鍊錶長度大,返回空

//否則就往下走到順數k位置

for (int i =1; i < k; i++)

else

temp1 = temp1->next;

}//上面若沒有return,即走到了順數k位置

//那麼我再用下邊這個while迴圈,走到

//倒數k位置,即順數n-k+1位置即可

while (temp1->next)

return temp2;

}};

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

思路 兩個指標,先讓第乙個指標和第二個指標都指向頭結點,然後再讓第乙個指正走 k 1 步,到達第k個節點。然後兩個指標同時往後移動,當第乙個結點到達末尾的時候,第二個結點所在位置就是倒數第k個節點了。public class solution public listnode findkthtotai...

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

題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。解題思路 1.先遍歷鍊錶,獲得鍊錶中的總結點數。2.倒數第k個元素,即為順數第 size k 1 個元素。3.遍歷鍊錶,獲得第 size k 1的元素。public class listnode public class solution 統計鍊錶...

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

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點 一,先排除掉非法情況,鍊錶為空和k值非法 二,計算鍊錶長度size 三,得到倒數第k個結點需要向後走的步數 steps size k 四,向後走steps步,得到倒數第k個結點 public class listnode public class solut...