找出單向鍊錶的倒數第m個元素

2021-06-16 07:46:27 字數 628 閱讀 3127

高效的查詢演算法:

找出單向鍊錶的倒數第m個元素

node* findmtolastnode(node* phead, int m)

else

}// 一起繼續遍歷到鍊錶尾部,

// 現在pfind和pcurrent之間間隔了m個元素,

// 所以,當pcurrent遍歷到尾部的時候,

// pfind就到了倒數第m個元素的位置上.

node* pfind = phead;

while (pcurrent)

return pfind;

}

這個演算法果然精妙!空間上只需要開銷兩個臨時變數,時間上只需要迴圈鍊錶一遍,也就是o(n)!

下面還有更加精炒的

//查詢倒數第k個元素並刪除。

void nodetest::removeindexnode(node *head, int k)

p1 = p1->next;

p2 = p2->next;

plast = p2;

c++;

}if (c >= k) else

}

找出單向鍊錶的倒數第m個元素

相對於雙向鍊錶來說,單向鍊錶只能從頭到尾依次訪問鍊錶的各個節點,所以如果要找鍊錶的倒數第m個元素也只能從頭到尾進行查詢,在查詢的過程中,設定兩個指標,其中current指標指向當前訪問的節點,previous指標指向current之前的節點,且兩者之間相距m個節點,這樣,當current指標指向最後...

找出單向鍊錶的倒數第m個元素

相對於雙向鍊錶來說,單向鍊錶只能從頭到尾依次訪問鍊錶的各個節點,所以如果要找鍊錶的倒數第m個元素也只能從頭到尾進行查詢,在查詢的過程中,設定兩個指標,其中current指標指向當前訪問的節點,previous指標指向current之前的節點,且兩者之間相距m個節點,這樣,當current指標指向最後...

找出鍊錶倒數第K個元素

思路 可設兩個頭指標p1和p2,當p2開始向前走,當走的步數為k時,p1開始走,此時當p2走到結尾時,p1所指的位置正好為倒數第k個元素的位置 class listnode override public string tostring return sb.tostring public stati...