main3-01~3-08.cpp 栈和队列-检验主程序

 

 

  1.  // main3-8.cpp 循环且可增加存储空间的顺序队列,检验bo3-8.cpp的主程序
  2.  #include"c1.h"
  3.  typedef int QElemType;
  4.  #include"c3-4.h"
  5.  #include"bo3-4.cpp" // 基本操作(1),与非循环同
  6.  #include"bo3-8.cpp" // 基本操作(2),与非循环不同
  7.  void print(QElemType i)
  8.  {
  9.    printf("%d ",i);
  10.  }
  11.  void main()
  12.  {
  13.    Status j;
  14.    int i,n=11;
  15.    QElemType d;
  16.    SqQueue2 Q;
  17.    InitQueue(Q);
  18.    printf("初始化队列后,队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
  19.    printf("队列长度为:%d/n",QueueLength(Q));
  20.    printf("请输入%d个整型队列元素:/n",n);
  21.    for(i=0;i<n;i++)
  22.    {
  23.      scanf("%d",&d);
  24.      EnQueue(Q,d);
  25.    }
  26.    printf("队列长度为:%d/n",QueueLength(Q));
  27.    printf("现在队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
  28.    printf("现在队列中的元素为: /n");
  29.    QueueTraverse(Q,print);
  30.    for(i=1;i<=3;i++)
  31.      DeQueue(Q,d);
  32.    printf("由队头删除3个元素,最后删除的元素为%d/n",d);
  33.    printf("现在队列中的元素为: /n");
  34.    QueueTraverse(Q,print);
  35.    j=GetHead(Q,d);
  36.    if(j)
  37.      printf("队头元素为: %d/n",d);
  38.    else
  39.      printf("无队头元素(空队列)/n");
  40.    for(i=1;i<=5;i++)
  41.      EnQueue(Q,i);
  42.    printf("依次向队尾插入1~5,现在队列中的元素为: /n");
  43.    QueueTraverse(Q,print);
  44.    ClearQueue(Q);
  45.    printf("清空队列后, 队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
  46.    j=GetHead(Q,d);
  47.    if(j)
  48.      printf("队头元素为: %d/n",d);
  49.    else
  50.      printf("无队头元素(空队列)/n");
  51.    DestroyQueue(Q);
  52.  }
  1.  // main3-2.cpp 检验bo3-2.cpp的主程序
  2.  #include"c1.h"
  3.  typedef int QElemType;
  4.  #include"c3-2.h"
  5.  #include"bo3-2.cpp"
  6.  void print(QElemType i)
  7.  {
  8.    printf("%d ",i);
  9.  }
  10.  void main()
  11.  {
  12.    int i;
  13.    QElemType d;
  14.    LinkQueue q;
  15.    InitQueue(q);
  16.    printf("成功地构造了一个空队列!/n");
  17.    printf("是否空队列?%d(1:空 0:否)  ",QueueEmpty(q));
  18.    printf("队列的长度为%d/n",QueueLength(q));
  19.    EnQueue(q,-5);
  20.    EnQueue(q,5);
  21.    EnQueue(q,10);
  22.    printf("插入3个元素(-5,5,10)后,队列的长度为%d/n",QueueLength(q));
  23.    printf("是否空队列?%d(1:空 0:否)  ",QueueEmpty(q));
  24.    printf("队列的元素依次为:");
  25.    QueueTraverse(q,print);
  26.    i=GetHead(q,d);
  27.    if(i==OK)
  28.      printf("队头元素是:%d/n",d);
  29.    DeQueue(q,d);
  30.    printf("删除了队头元素%d/n",d);
  31.    i=GetHead(q,d);
  32.    if(i==OK)
  33.      printf("新的队头元素是:%d/n",d);
  34.    ClearQueue(q);
  35.    printf("清空队列后,q.front=%u q.rear=%u q.front->next=%u/n",q.front,q.rear,q.front->next);
  36.    DestroyQueue(q);
  37.    printf("销毁队列后,q.front=%u q.rear=%u/n",q.front, q.rear);
  38.  }
  1.  // main3-3.cpp 循环队列 检验bo3-3.cpp的主程序
  2.  #include"c1.h"
  3.  typedef int QElemType;
  4.  #include"c3-3.h"
  5.  #include"bo3-3.cpp"
  6.  void print(QElemType i)
  7.  {
  8.    printf("%d ",i);
  9.  }
  10.  void main()
  11.  {
  12.    Status j;
  13.    int i=0,l;
  14.    QElemType d;
  15.    SqQueue Q;
  16.    InitQueue(Q);
  17.    printf("初始化队列后,队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
  18.    printf("请输入整型队列元素(不超过%d个),-1为提前结束符: ",MAX_QSIZE-1);
  19.    do
  20.    {
  21.      scanf("%d",&d);
  22.      if(d==-1)
  23.        break;
  24.      i++;
  25.      EnQueue(Q,d);
  26.    }while(i<MAX_QSIZE-1);
  27.    printf("队列长度为: %d/n",QueueLength(Q));
  28.    printf("现在队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
  29.    printf("连续%d次由队头删除元素,队尾插入元素:/n",MAX_QSIZE);
  30.    for(l=1;l<=MAX_QSIZE;l++)
  31.    {
  32.      DeQueue(Q,d);
  33.      printf("删除的元素是%d,请输入待插入的元素: ",d);
  34.      scanf("%d",&d);
  35.      EnQueue(Q,d);
  36.    }
  37.    l=QueueLength(Q);
  38.    printf("现在队列中的元素为:/n");
  39.    QueueTraverse(Q,print);
  40.    printf("共向队尾插入了%d个元素/n",i+MAX_QSIZE);
  41.    if(l-2>0)
  42.      printf("现在由队头删除%d个元素: /n",l-2);
  43.    while(QueueLength(Q)>2)
  44.    {
  45.      DeQueue(Q,d);
  46.      printf("删除的元素值为%d/n",d);
  47.    }
  48.    j=GetHead(Q,d);
  49.    if(j)
  50.      printf("现在队头元素为: %d/n",d);
  51.    ClearQueue(Q);
  52.    printf("清空队列后, 队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
  53.    DestroyQueue(Q);
  54.  }
  1.  // main3-4.cpp 顺序队列(非循环),检验bo3-4.cpp和bo3-9.cpp的主程序
  2.  #include"c1.h"
  3.  typedef int QElemType;
  4.  #include"c3-4.h"
  5.  #include"bo3-4.cpp" // 基本操作(1)
  6.  #include"bo3-9.cpp" // 基本操作(2)
  7.  void print(QElemType i)
  8.  {
  9.    printf("%d ",i);
  10.  }
  11.  void main()
  12.  {
  13.    Status j;
  14.    int i,n=11;
  15.    QElemType d;
  16.    SqQueue2 Q;
  17.    InitQueue(Q);
  18.    printf("初始化队列后,队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
  19.    printf("队列长度为:%d/n",QueueLength(Q));
  20.    printf("请输入%d个整型队列元素:/n",n);
  21.    for(i=0;i<n;i++)
  22.    {
  23.      scanf("%d",&d);
  24.      EnQueue(Q,d);
  25.    }
  26.    printf("队列长度为:%d/n",QueueLength(Q));
  27.    printf("现在队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
  28.    printf("现在队列中的元素为: /n");
  29.    QueueTraverse(Q,print);
  30.    DeQueue(Q,d);
  31.    printf("删除队头元素%d/n",d);
  32.    printf("队列中的元素为: /n");
  33.    QueueTraverse(Q,print);
  34.    j=GetHead(Q,d);
  35.    if(j)
  36.      printf("队头元素为: %d/n",d);
  37.    else
  38.      printf("无队头元素(空队列)/n");
  39.    ClearQueue(Q);
  40.    printf("清空队列后, 队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
  41.    j=GetHead(Q,d);
  42.    if(j)
  43.      printf("队头元素为: %d/n",d);
  44.    else
  45.      printf("无队头元素(空队列)/n");
  46.    DestroyQueue(Q);
  47.  }
  1.  // main3-5.cpp 检验bo3-5.cpp的主程序
  2.  #include"c1.h"
  3.  typedef int SElemType; // 定义栈元素的类型
  4.  #include"bo3-5.cpp"
  5.  void print(SElemType c)
  6.  {
  7.    printf("%d ",c);
  8.  }
  9.  void main()
  10.  {
  11.    int j;
  12.    LinkStack s;
  13.    SElemType e;
  14.    InitStack(s); // 初始化栈s
  15.    for(j=1;j<=5;j++) // 将2,4,6,8,10入栈
  16.      Push(s,2*j);
  17.    printf("栈中的元素从栈底到栈顶依次为: ");
  18.    StackTraverse(s,print);
  19.    Pop(s,e);
  20.    printf("弹出的栈顶元素为%d/n",e);
  21.    printf("栈空否: %d(1:空 0:否)/n",StackEmpty(s));
  22.    GetTop(s,e);
  23.    printf("当前栈顶元素为%d,栈的长度为%d/n",e,StackLength(s));
  24.    ClearStack(s);
  25.    printf("清空栈后,栈空否: %d(1:空 0:否),栈的长度为%d/n",StackEmpty(s),StackLength(s));
  26.    DestroyStack(s);
  27.  }

 

  1.  // main3-6.cpp 检验bo3-6.cpp的主程序
  2.  #include"c1.h"
  3.  typedef int QElemType;
  4.  #include"c3-2.h"
  5.  #include"bo3-6.cpp" // 仅此句与main3-2.cpp不同
  6.  void print(QElemType i)
  7.  {
  8.    printf("%d ",i);
  9.  }
  10.  void main()
  11.  {
  12.    int i;
  13.    QElemType d;
  14.    LinkQueue q;
  15.    InitQueue(q);
  16.    printf("成功地构造了一个空队列!/n");
  17.    printf("是否空队列?%d(1:空 0:否)  ",QueueEmpty(q));
  18.    printf("队列的长度为%d/n",QueueLength(q));
  19.    EnQueue(q,-5);
  20.    EnQueue(q,5);
  21.    EnQueue(q,10);
  22.    printf("插入3个元素(-5,5,10)后,队列的长度为%d/n",QueueLength(q));
  23.    printf("是否空队列?%d(1:空 0:否)  ",QueueEmpty(q));
  24.    printf("队列的元素依次为:");
  25.    QueueTraverse(q,print);
  26.    i=GetHead(q,d);
  27.    if(i==OK)
  28.      printf("队头元素是:%d/n",d);
  29.    DeQueue(q,d);
  30.    printf("删除了队头元素%d/n",d);
  31.    i=GetHead(q,d);
  32.    if(i==OK)
  33.      printf("新的队头元素是:%d/n",d);
  34.    ClearQueue(q);
  35.    printf("清空队列后,q.front=%u q.rear=%u q.front->next=%u/n",q.front,q.rear,q.front->next);
  36.    DestroyQueue(q);
  37.    printf("销毁队列后,q.front=%u q.rear=%u/n",q.front, q.rear);
  38.  }
  1.  // main3-7.cpp 检验bo3-7.cpp的主程序
  2.  #include"c1.h"
  3.  typedef int QElemType;
  4.  #include"c3-5.h"
  5.  #include"bo3-7.cpp"
  6.  void print(QElemType i)
  7.  {
  8.    printf("%d ",i);
  9.  }
  10.  void main()
  11.  {
  12.    Status j;
  13.    int i,k=5;
  14.    QElemType d;
  15.    SqQueue1 Q;
  16.    InitQueue(Q);
  17.    printf("初始化队列后,队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
  18.    for(i=1;i<=k;i++)
  19.      EnQueue(Q,i); // 依次入队k个元素
  20.    printf("依次入队%d个元素后,队列中的元素为: ",k);
  21.    QueueTraverse(Q,print);
  22.    printf("队列长度为%d,队列空否?%u(1:空 0:否)/n",QueueLength(Q),QueueEmpty(Q));
  23.    DeQueue(Q,d);
  24.    printf("出队一个元素,其值是%d/n",d);
  25.    j=GetHead(Q,d);
  26.    if(j)
  27.      printf("现在队头元素是%d/n",d);
  28.    ClearQueue(Q);
  29.    printf("清空队列后, 队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
  30.    DestroyQueue(Q);
  31.  }

 

 

  1.  // main3-8.cpp 循环且可增加存储空间的顺序队列,检验bo3-8.cpp的主程序
  2.  #include"c1.h"
  3.  typedef int QElemType;
  4.  #include"c3-4.h"
  5.  #include"bo3-4.cpp" // 基本操作(1),与非循环同
  6.  #include"bo3-8.cpp" // 基本操作(2),与非循环不同
  7.  void print(QElemType i)
  8.  {
  9.    printf("%d ",i);
  10.  }
  11.  void main()
  12.  {
  13.    Status j;
  14.    int i,n=11;
  15.    QElemType d;
  16.    SqQueue2 Q;
  17.    InitQueue(Q);
  18.    printf("初始化队列后,队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
  19.    printf("队列长度为:%d/n",QueueLength(Q));
  20.    printf("请输入%d个整型队列元素:/n",n);
  21.    for(i=0;i<n;i++)
  22.    {
  23.      scanf("%d",&d);
  24.      EnQueue(Q,d);
  25.    }
  26.    printf("队列长度为:%d/n",QueueLength(Q));
  27.    printf("现在队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
  28.    printf("现在队列中的元素为: /n");
  29.    QueueTraverse(Q,print);
  30.    for(i=1;i<=3;i++)
  31.      DeQueue(Q,d);
  32.    printf("由队头删除3个元素,最后删除的元素为%d/n",d);
  33.    printf("现在队列中的元素为: /n");
  34.    QueueTraverse(Q,print);
  35.    j=GetHead(Q,d);
  36.    if(j)
  37.      printf("队头元素为: %d/n",d);
  38.    else
  39.      printf("无队头元素(空队列)/n");
  40.    for(i=1;i<=5;i++)
  41.      EnQueue(Q,i);
  42.    printf("依次向队尾插入1~5,现在队列中的元素为: /n");
  43.    QueueTraverse(Q,print);
  44.    ClearQueue(Q);
  45.    printf("清空队列后, 队列空否?%u(1:空 0:否)/n",QueueEmpty(Q));
  46.    j=GetHead(Q,d);
  47.    if(j)
  48.      printf("队头元素为: %d/n",d);
  49.    else
  50.      printf("无队头元素(空队列)/n");
  51.    DestroyQueue(Q);
  52.  }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值