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

2021-08-20 18:13:36 字數 857 閱讀 7820

題目描述

演算法分析

提交**:

class solution 

return i < k ? nullptr : slownode;

} /* 兩次遍歷 */

listnode* findkthtotail2(listnode* plisthead, unsigned int k)

if (k > listlength)

return nullptr;

listnode* resultnode = plisthead;

for (int i = 0; i < (listlength - k); ++i)

resultnode = resultnode->next;

return resultnode;

}};

測試**:

// ********************測試**********************

// 測試要找的結點在鍊錶中間

void test1()

// 測試要找的結點是鍊錶的尾結點

void test2()

// 測試要找的結點是鍊錶的頭結點

void test3()

// 測試空鍊錶

void test4()

// 測試輸入的第二個引數大於鍊錶的結點總數

void test5()

// 測試輸入的第二個引數為0

void test6()

int main(int argc, char* argv)

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

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。思路 假設鍊錶的總結點個數為n,倒數第k個結點即正數第n k 1 n k 1 個結點。如何在一次遍歷的情況下就找到倒數第k個結點呢?方法 定義兩個指標,p和q,讓p先走k 1步,剩下n k 1 步即到達終點,同時這n k 1 步也是正著走能找到倒數第k個結點...

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

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

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

題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個節點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾節點是倒數第1個節點。例如,乙個鍊錶有6個節點,從頭節點開始,它們的值依次是1 2 3 4 5 6。這個鍊錶的倒數第3個節點是值為4的節點。分析 不得不說劍指的easy題真的思路很好想。遇到鍊錶題目一...