ep7_9_1.cpp
上传用户:wxcui2006
上传日期:2022-07-12
资源大小:1274k
文件大小:1k
源码类别:

书籍源码

开发平台:

Visual C++

  1. /*7.9  用单链表类来表示一个双端队列,要求可在表的两端插入(链表头和尾,即可用向前和也可用向后生成),
  2. 但只能在表的一端删除(链表头)。给出基于此结构队列的两个入队和一个出队算法的成员函数。
  3. 在这里的第2种方法中采用类似STL中队适配器的做法,链表作为队的成员对象,采用聚合技术。链表类不作为结点类的友元类。
  4. */
  5. #include"ep7_9_1.h"
  6. template<typename T>class Queue{
  7. list<T> que;
  8. public:
  9. Queue():que(){}  //构造一个空链队
  10. ~Queue(){};
  11. bool IsEmpty(){ return que.IsEmpty();}  //队空否?
  12. void EnQue(const T &data){que.EnRear(data);}      //进队
  13. T DeQue(){return que.DeFront();}  //出队
  14. T GetFront(){return que.GetFront();}    //查看队头数据
  15. void MakeEmpty(){que.MakeEmpty();}     //置空队列,与析构逻辑上不同,物理上一样
  16. void EnQueFront(const T &data){que.EnFront(data);}                     //从队头入队
  17. };
  18. int main(){
  19. int i;
  20. Queue<char> que;
  21. char str1[]="abcdefghijklmnop";// 18元素数组,17个字符,再加串结束符
  22. for(i=0;i<17;i++) que.EnQue(str1[i]);
  23. for(i=0;i<17;i++) que.EnQueFront(str1[i]);
  24. while(!que.IsEmpty()) cout<<que.DeQue();    //先进先出,串结束符成为空格放最前面
  25. cout<<endl;
  26. if(que.IsEmpty()) cout<<"队空"<<endl;
  27. return 0;
  28. }