- // main3-8.cpp 循环且可增加存储空间的顺序队列,检验bo3-8.cpp的主程序
- #include"c1.h"
- typedef int QElemType;
- #include"c3-4.h"
- #include"bo3-4.cpp" // 基本操作(1),与非循环同
- #include"bo3-8.cpp" // 基本操作(2),与非循环不同
- void print(QElemType i)
- {
- printf("%d ",i);
- }
- void main()
- {
- Status j;
- int i,n=11;
- QElemType d;
- SqQueue2 Q;
- InitQueue(Q);
- printf("初始化队列后,队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
- printf("队列长度为:%d/n",QueueLength(Q));
- printf("请输入%d个整型队列元素:/n",n);
- for(i=0;i<n;i++)
- {
- scanf("%d",&d);
- EnQueue(Q,d);
- }
- printf("队列长度为:%d/n",QueueLength(Q));
- printf("现在队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
- printf("现在队列中的元素为: /n");
- QueueTraverse(Q,print);
- for(i=1;i<=3;i++)
- DeQueue(Q,d);
- printf("由队头删除3个元素,最后删除的元素为%d/n",d);
- printf("现在队列中的元素为: /n");
- QueueTraverse(Q,print);
- j=GetHead(Q,d);
- if(j)
- printf("队头元素为: %d/n",d);
- else
- printf("无队头元素(空队列)/n");
- for(i=1;i<=5;i++)
- EnQueue(Q,i);
- printf("依次向队尾插入1~5,现在队列中的元素为: /n");
- QueueTraverse(Q,print);
- ClearQueue(Q);
- printf("清空队列后, 队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
- j=GetHead(Q,d);
- if(j)
- printf("队头元素为: %d/n",d);
- else
- printf("无队头元素(空队列)/n");
- DestroyQueue(Q);
- }
- // main3-2.cpp 检验bo3-2.cpp的主程序
- #include"c1.h"
- typedef int QElemType;
- #include"c3-2.h"
- #include"bo3-2.cpp"
- void print(QElemType i)
- {
- printf("%d ",i);
- }
- void main()
- {
- int i;
- QElemType d;
- LinkQueue q;
- InitQueue(q);
- printf("成功地构造了一个空队列!/n");
- printf("是否空队列?%d(1:空 0:否) ",QueueEmpty(q));
- printf("队列的长度为%d/n",QueueLength(q));
- EnQueue(q,-5);
- EnQueue(q,5);
- EnQueue(q,10);
- printf("插入3个元素(-5,5,10)后,队列的长度为%d/n",QueueLength(q));
- printf("是否空队列?%d(1:空 0:否) ",QueueEmpty(q));
- printf("队列的元素依次为:");
- QueueTraverse(q,print);
- i=GetHead(q,d);
- if(i==OK)
- printf("队头元素是:%d/n",d);
- DeQueue(q,d);
- printf("删除了队头元素%d/n",d);
- i=GetHead(q,d);
- if(i==OK)
- printf("新的队头元素是:%d/n",d);
- ClearQueue(q);
- printf("清空队列后,q.front=%u q.rear=%u q.front->next=%u/n",q.front,q.rear,q.front->next);
- DestroyQueue(q);
- printf("销毁队列后,q.front=%u q.rear=%u/n",q.front, q.rear);
- }
- // main3-3.cpp 循环队列 检验bo3-3.cpp的主程序
- #include"c1.h"
- typedef int QElemType;
- #include"c3-3.h"
- #include"bo3-3.cpp"
- void print(QElemType i)
- {
- printf("%d ",i);
- }
- void main()
- {
- Status j;
- int i=0,l;
- QElemType d;
- SqQueue Q;
- InitQueue(Q);
- printf("初始化队列后,队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
- printf("请输入整型队列元素(不超过%d个),-1为提前结束符: ",MAX_QSIZE-1);
- do
- {
- scanf("%d",&d);
- if(d==-1)
- break;
- i++;
- EnQueue(Q,d);
- }while(i<MAX_QSIZE-1);
- printf("队列长度为: %d/n",QueueLength(Q));
- printf("现在队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
- printf("连续%d次由队头删除元素,队尾插入元素:/n",MAX_QSIZE);
- for(l=1;l<=MAX_QSIZE;l++)
- {
- DeQueue(Q,d);
- printf("删除的元素是%d,请输入待插入的元素: ",d);
- scanf("%d",&d);
- EnQueue(Q,d);
- }
- l=QueueLength(Q);
- printf("现在队列中的元素为:/n");
- QueueTraverse(Q,print);
- printf("共向队尾插入了%d个元素/n",i+MAX_QSIZE);
- if(l-2>0)
- printf("现在由队头删除%d个元素: /n",l-2);
- while(QueueLength(Q)>2)
- {
- DeQueue(Q,d);
- printf("删除的元素值为%d/n",d);
- }
- j=GetHead(Q,d);
- if(j)
- printf("现在队头元素为: %d/n",d);
- ClearQueue(Q);
- printf("清空队列后, 队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
- DestroyQueue(Q);
- }
- // main3-4.cpp 顺序队列(非循环),检验bo3-4.cpp和bo3-9.cpp的主程序
- #include"c1.h"
- typedef int QElemType;
- #include"c3-4.h"
- #include"bo3-4.cpp" // 基本操作(1)
- #include"bo3-9.cpp" // 基本操作(2)
- void print(QElemType i)
- {
- printf("%d ",i);
- }
- void main()
- {
- Status j;
- int i,n=11;
- QElemType d;
- SqQueue2 Q;
- InitQueue(Q);
- printf("初始化队列后,队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
- printf("队列长度为:%d/n",QueueLength(Q));
- printf("请输入%d个整型队列元素:/n",n);
- for(i=0;i<n;i++)
- {
- scanf("%d",&d);
- EnQueue(Q,d);
- }
- printf("队列长度为:%d/n",QueueLength(Q));
- printf("现在队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
- printf("现在队列中的元素为: /n");
- QueueTraverse(Q,print);
- DeQueue(Q,d);
- printf("删除队头元素%d/n",d);
- printf("队列中的元素为: /n");
- QueueTraverse(Q,print);
- j=GetHead(Q,d);
- if(j)
- printf("队头元素为: %d/n",d);
- else
- printf("无队头元素(空队列)/n");
- ClearQueue(Q);
- printf("清空队列后, 队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
- j=GetHead(Q,d);
- if(j)
- printf("队头元素为: %d/n",d);
- else
- printf("无队头元素(空队列)/n");
- DestroyQueue(Q);
- }
- // main3-5.cpp 检验bo3-5.cpp的主程序
- #include"c1.h"
- typedef int SElemType; // 定义栈元素的类型
- #include"bo3-5.cpp"
- void print(SElemType c)
- {
- printf("%d ",c);
- }
- void main()
- {
- int j;
- LinkStack s;
- SElemType e;
- InitStack(s); // 初始化栈s
- for(j=1;j<=5;j++) // 将2,4,6,8,10入栈
- Push(s,2*j);
- printf("栈中的元素从栈底到栈顶依次为: ");
- StackTraverse(s,print);
- Pop(s,e);
- printf("弹出的栈顶元素为%d/n",e);
- printf("栈空否: %d(1:空 0:否)/n",StackEmpty(s));
- GetTop(s,e);
- printf("当前栈顶元素为%d,栈的长度为%d/n",e,StackLength(s));
- ClearStack(s);
- printf("清空栈后,栈空否: %d(1:空 0:否),栈的长度为%d/n",StackEmpty(s),StackLength(s));
- DestroyStack(s);
- }
- // main3-6.cpp 检验bo3-6.cpp的主程序
- #include"c1.h"
- typedef int QElemType;
- #include"c3-2.h"
- #include"bo3-6.cpp" // 仅此句与main3-2.cpp不同
- void print(QElemType i)
- {
- printf("%d ",i);
- }
- void main()
- {
- int i;
- QElemType d;
- LinkQueue q;
- InitQueue(q);
- printf("成功地构造了一个空队列!/n");
- printf("是否空队列?%d(1:空 0:否) ",QueueEmpty(q));
- printf("队列的长度为%d/n",QueueLength(q));
- EnQueue(q,-5);
- EnQueue(q,5);
- EnQueue(q,10);
- printf("插入3个元素(-5,5,10)后,队列的长度为%d/n",QueueLength(q));
- printf("是否空队列?%d(1:空 0:否) ",QueueEmpty(q));
- printf("队列的元素依次为:");
- QueueTraverse(q,print);
- i=GetHead(q,d);
- if(i==OK)
- printf("队头元素是:%d/n",d);
- DeQueue(q,d);
- printf("删除了队头元素%d/n",d);
- i=GetHead(q,d);
- if(i==OK)
- printf("新的队头元素是:%d/n",d);
- ClearQueue(q);
- printf("清空队列后,q.front=%u q.rear=%u q.front->next=%u/n",q.front,q.rear,q.front->next);
- DestroyQueue(q);
- printf("销毁队列后,q.front=%u q.rear=%u/n",q.front, q.rear);
- }
- // main3-7.cpp 检验bo3-7.cpp的主程序
- #include"c1.h"
- typedef int QElemType;
- #include"c3-5.h"
- #include"bo3-7.cpp"
- void print(QElemType i)
- {
- printf("%d ",i);
- }
- void main()
- {
- Status j;
- int i,k=5;
- QElemType d;
- SqQueue1 Q;
- InitQueue(Q);
- printf("初始化队列后,队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
- for(i=1;i<=k;i++)
- EnQueue(Q,i); // 依次入队k个元素
- printf("依次入队%d个元素后,队列中的元素为: ",k);
- QueueTraverse(Q,print);
- printf("队列长度为%d,队列空否?%u(1:空 0:否)/n",QueueLength(Q),QueueEmpty(Q));
- DeQueue(Q,d);
- printf("出队一个元素,其值是%d/n",d);
- j=GetHead(Q,d);
- if(j)
- printf("现在队头元素是%d/n",d);
- ClearQueue(Q);
- printf("清空队列后, 队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
- DestroyQueue(Q);
- }
- // main3-8.cpp 循环且可增加存储空间的顺序队列,检验bo3-8.cpp的主程序
- #include"c1.h"
- typedef int QElemType;
- #include"c3-4.h"
- #include"bo3-4.cpp" // 基本操作(1),与非循环同
- #include"bo3-8.cpp" // 基本操作(2),与非循环不同
- void print(QElemType i)
- {
- printf("%d ",i);
- }
- void main()
- {
- Status j;
- int i,n=11;
- QElemType d;
- SqQueue2 Q;
- InitQueue(Q);
- printf("初始化队列后,队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
- printf("队列长度为:%d/n",QueueLength(Q));
- printf("请输入%d个整型队列元素:/n",n);
- for(i=0;i<n;i++)
- {
- scanf("%d",&d);
- EnQueue(Q,d);
- }
- printf("队列长度为:%d/n",QueueLength(Q));
- printf("现在队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
- printf("现在队列中的元素为: /n");
- QueueTraverse(Q,print);
- for(i=1;i<=3;i++)
- DeQueue(Q,d);
- printf("由队头删除3个元素,最后删除的元素为%d/n",d);
- printf("现在队列中的元素为: /n");
- QueueTraverse(Q,print);
- j=GetHead(Q,d);
- if(j)
- printf("队头元素为: %d/n",d);
- else
- printf("无队头元素(空队列)/n");
- for(i=1;i<=5;i++)
- EnQueue(Q,i);
- printf("依次向队尾插入1~5,现在队列中的元素为: /n");
- QueueTraverse(Q,print);
- ClearQueue(Q);
- printf("清空队列后, 队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
- j=GetHead(Q,d);
- if(j)
- printf("队头元素为: %d/n",d);
- else
- printf("无队头元素(空队列)/n");
- DestroyQueue(Q);
- }