问题:一个队列如何找出倒数第k个值?
解:
第一种:如果这个队列是一个单项指针的队列,里面的结构如下
这样的话,可以建两个指针,一个循环到底的时候,控制两次指针相差k个元素,一个指针指向队列尾,另一个指针指向队列倒数第k个元素。
第二种:如果这个队列是一个单项指针的队列,里面的结构如下
id 标识是第几个,tatalcount标识总共是多少个。只要循环遍历链表totalcount-id =k就好了。
第三种:如果这个队列是一个双向指针的队列,里面的结构如下
pre 是前驱指针,next是后驱指针,item是元素值
这样在查找倒数第k的时候,只要从后往前遍历即可。
总结:
第一种方法,占用的资源最少,插入也相对容易一些。
第二种方法,插入相对麻烦一些,如果k在队列靠前,遍历更有优势。
第三种方法,插入相对麻烦一些,如果k在队列靠尾,遍历更有优势。