問題:一個隊列如何找出倒數第k個值?
解:
第一種:如果這個隊列是一個單項指針的隊列,裏面的結構如下
這樣的話,可以建兩個指針,一個循環到底的時候,控制兩次指針相差k個元素,一個指針指向隊列尾,另一個指針指向隊列倒數第k個元素。
第二種:如果這個隊列是一個單項指針的隊列,裏面的結構如下
id 標識是第幾個,tatalcount標識總共是多少個。只要循環遍歷鏈表totalcount-id =k就好了。
第三種:如果這個隊列是一個雙向指針的隊列,裏面的結構如下
pre 是前驅指針,next是後驅指針,item是元素值
這樣在查找倒數第k的時候,只要從後往前遍歷即可。
總結:
第一種方法,佔用的資源最少,插入也相對容易一些。
第二種方法,插入相對麻煩一些,如果k在隊列靠前,遍歷更有優勢。
第三種方法,插入相對麻煩一些,如果k在隊列靠尾,遍歷更有優勢。