乙個佇列如何找出倒數第k個值

2021-08-19 01:21:15 字數 668 閱讀 6613

問題:乙個佇列如何找出倒數第k個值?

解:第一種:如果這個佇列是乙個單項指標的佇列,裡面的結構如下

這樣的話,可以建兩個指標,乙個迴圈到底的時候,控制兩次指標相差k個元素,乙個指標指向佇列尾,另乙個指標指向佇列倒數第k個元素。

第二種:如果這個佇列是乙個單項指標的佇列,裡面的結構如下

id 標識是第幾個,tatalcount標識總共是多少個。只要迴圈遍歷鍊錶totalcount-id =k就好了。

第三種:如果這個佇列是乙個雙向指標的佇列,裡面的結構如下

pre 是前驅指標,next是後驅指標,item是元素值

這樣在查詢倒數第k的時候,只要從後往前遍歷即可。

總結:第一種方法,占用的資源最少,插入也相對容易一些。

第二種方法,插入相對麻煩一些,如果k在佇列靠前,遍歷更有優勢。

第三種方法,插入相對麻煩一些,如果k在佇列靠尾,遍歷更有優勢。

輸出乙個單向鍊錶,找出倒數第k個結點的值

輸出乙個單向鍊錶,找出倒數第k個結點的值 輸入描述 1.輸入鍊錶結點的個數 2.輸入鍊錶的值 3.輸入k的值 示例1 輸入 1 2 3 4 5 6 7 8 include include 第一步定義結構體 typedef struct nodeelemsn int main void p head ...

找出鍊錶倒數第K個元素

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

找出單鏈表的倒數第k個元素

一 思路 有兩個指標分別向linklist,它們分別是 low,height 先是height先向前移動k個位置,然後low和height一起向前移動,一直到height到達鍊錶的末尾,這是low所指的位置就是倒是第k個元素,考慮到的邊界值有k 1或者k linklist的長度的時候或者linkli...