題目描述
演算法分析
提交**:
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題真的思路很好想。遇到鍊錶題目一...