【练习3.26】
双端队列(deque)是由一些项的表组成的数据结构,对该数据结构可以进行下列操作:
Push(X,D):将项X插入到双端队列D的前端。
Pop(D):从双端队列D中删除前端项并返回。
Inject(X,D):将项X插入到双端队列D的尾端。
Eject(D):从双端队列D中删除尾端项并返回。
编写支持双端队列的例程,每种操作均花费O(1)时间。
Answer:
相当简单的题目,把改一改双向链表就可以了。
测试代码:
1 #include <iostream> 2 #include "double_linklist.h" 3 using namespace std; 4 using namespace doublelinklist; 5 template class DList<int>; 6 int main(void) 7 { 8 DList<int> number; 9 number.additem(2); 10 number.additem(3); 11 number.additem(5); 12 number.additem(7); 13 14 //测试前后插入 15 number.push(11); 16 number.inject(13); 17 number.inject(17); 18 number.push(19); 19 number.traverse(); 20 cout << "\n/*end*/\n\n" << flush; 21 22 //测试前后删除 23 number.pop(); 24 number.pop(); 25 number.pop(); 26 number.eject(); 27 number.eject(); 28 number.traverse(); 29 30 system("pause"); 31 }