求單向鍊錶中的倒數第K個節點2

2021-07-11 19:50:06 字數 841 閱讀 9579

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

解題思路: 主要思路是借助兩個迭代器指向的位置,確定倒數第k個節點。

第一步,測試用例:

//1.測試用例

int main();

//儲存倒數第k個節點的迭代器

list

::iterator result;

//要查詢的倒數第k個節點

int k;

cout

<< "please enter k: \n";

while(cin >> k)

return

0;}

//2.根據測試用例定義模板函式,輸入引數為乙個鍊錶和k的值,返回倒數第k個節點的迭代器

template

typename

list

::iterator findktotail(list

&li, int k)

//因為此時result與beg相差k-1個節點,將兩個迭代器同時向後移動,當beg指向鍊錶的末尾時停止移動,result即為倒數第k個節點

while(beg != li.end())

//返回迭代器

return result;

}

整體思路都在注釋中描述,此題重點注意的是輸入是否合法、邊界問題及對此類問題的處理方法;作為一名程式設計人員,應該對問題的考慮更加全面、細心,提前**有可能出現的令程式崩潰的問題。

求煉表中倒數第K個節點

求煉表中倒數第k個節點,思路很簡單我們在遍歷時維持兩個指標,第乙個指標從鍊錶的頭指標開始遍歷,在第k 1步之前,第二個指標保持不動 在第k 1步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k 1,當第乙個 走在前面的 指標到達鍊錶的尾結點時,第二個指標 走在後面的 指標正好...

求鍊錶倒數第k個節點

1.初解 public static node findkthtotail node head,uint k behind head while ahead.next null return behind 上面的 存在3處魯棒性問題 1 輸入的head為空指標。由於 會試圖訪問空指標指向的記憶體,程...

求煉表中的倒數第K個節點

題目描述 求鍊錶的倒數第k個節點 基本思路 在遍歷時維持兩個指標,第乙個指標從鍊錶的頭指標開始遍歷,在第k 1步之前,第二個指標保持不動 在第k 1步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k 1,當第乙個 走在前面的 指標到達鍊錶的尾結點時,第二個指標 走在後面的 指...