資料結構之線性表 倒數第k個結點

2021-06-13 15:45:20 字數 821 閱讀 2885

題目:

已知乙個帶有頭結點的單鏈表,結點結構為:

data

link

在不改變鍊錶的情況下,設計乙個盡可能高效的演算法,查詢鍊錶中倒數第k個結點,若查詢成功,輸出該結點data的值,並返回1,否則返回0.

分析:

本題的關鍵是設計乙個盡可能高效的演算法,通過鍊錶的一遍遍歷,找到倒數第k個結點的位置。基本思想:定義兩個指標變數,初始時均指向頭結點的下乙個結點,其中乙個指標沿鍊錶移動;當該指標移動到第k個結點時,另乙個指標開始與該指標同步移動;當第乙個指標移動到鍊錶結尾時,第二個指標所指示的結點即為倒數第k個結點。(本題還可採用兩遍遍歷、遞迴演算法、輔助陣列等實現,但都不是最佳解法)

**:

#include #include typedef int elemtype;

typedef struct lnode lnode, *linklist;

int search_k(linklist list, int k)

else

p = p->link;

} if(count < k)

else }

linklist creatlist()

r->link = null;

return list;

}int main()

測試結果:

資料結構之線性表 倒數第k個結點

題目 已知乙個帶有頭結點的單鏈表,結點結構為 data link 在不改變鍊錶的情況下,設計乙個盡可能高效的演算法,查詢鍊錶中倒數第k個結點,若查詢成功,輸出該結點data的值,並返回1,否則返回0.分析 本題的關鍵是設計乙個盡可能高效的演算法,通過鍊錶的一遍遍歷,找到倒數第k個結點的位置。基本思想...

資料結構 鍊錶中倒數第k個結點

題目 輸入乙個鍊錶,輸出該鍊錶中的倒數第k個節點。為符合大多數人的習慣,本題從1開始計數。即鍊錶的尾節點是倒數第乙個結點。例如乙個鍊錶有6個結點,從頭到尾開始它們的值依次是1,2,3,4,5,6。這個鍊錶的倒數第3個結點是值為4的結點。鍊錶的定義如下 struct listnode 其實這個題如果是...

資料結構 鍊錶中倒數第K個結點

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾結點是倒數第1個結點。例如乙個鍊錶有6個結點,從頭結點開始它們的值依次是1 2 3 4 5 6。這個鍊錶的倒數第3個結點是值為4的結點。解題思路 定義兩個指標,乙個指標先走k 1步另乙個指標再開始走,當第乙...