已知乙個帶表頭結點的單鏈表,結點結構為
typedef struct node
lnode,
*linklist;
在不改變鍊錶的前提下,設計乙個盡可能高效的演算法,查詢鍊錶中倒數第k個位置上的結點(k為正整數)。若查詢成功,輸出改結點的data域的值。
定義兩個指標p,q,初始時均指向頭結點,p沿鍊錶開始向後移動,當p指向第k個元素結點時,q開始移動,這樣當p到達鍊錶尾部時q剛好指向倒數第k個結點。
注意:這樣只需要遍歷一次鍊錶,考試時直接滿分,你如果遍歷兩次那就要扣分了,時間複雜度是評分的標準。
演算法的實現**如下:
linklist find_k
(linklist h,
int k)
//查詢單鏈表中倒數第k個結點(一次遍歷實現得滿分)
}printf
("倒數第%d個結點的值為%d\n"
刪除單鏈表倒數第k個結點
在資料結構這一方面,鍊錶這塊容易搞混的是它的指標。下面的演算法為刪除單鏈表倒數第k個結點,所有的步驟解析都在 裡說明了。刪除單鏈表的倒數第 k個結點.結點定義 classnode public classremotelastedkthnode node node head 遍歷一遍鍊錶,得到 k 最...
查詢單鏈表中的倒數第 k 個結點
思路 1.編寫乙個方法,接收head節點,同時接收乙個index 2.index表示是倒數第index個節點 3.先把鍊錶從頭到尾遍歷,得到鍊錶的總長度getlength 4.得到size後,我們從鍊錶的第乙個開始遍歷 size index個 5.如果找到了返回該節點,否則返回null public...
尋找單鏈表中倒數第k個結點
題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾結點是倒數第1個結點。例如乙個鍊錶有6個結點,從頭結點開始它們的值依次是1,2,3,4,5,6.這個鍊錶的倒數第3個結點是值為4的結點。思路分析 為了得到倒數第k個結點,很自然的想法是先走到鍊錶的...