zoukankan      html  css  js  c++  java
  • 数据结构期末复习(さん)--循环队列定义及使用

      1 #include<iostream>
      2 using namespace std;
      3 #define Ok 1
      4 #define Error 0
      5 #define Overflow -1
      6 #define Maxsize 100
      7 typedef struct
      8 {
      9     int *base;   //存储空间基地址
     10     int front;   //头指针,每次在队头删除元素,front加1
     11     int rear;    //尾指针,每次在队尾插入元素,rear 加1
     12     int queuesize;
     13 } SqQueue;
     14 
     15 //初始化
     16 int Init_Queue(SqQueue &Q)
     17 {
     18     //构造一个最大存储空间为MaxSize的空循环队列Q
     19     Q.base = new int[Maxsize];
     20     if(!Q.base)        //存储分配失败
     21         exit(Overflow);
     22     Q.queuesize = Maxsize;
     23     Q.front = Q.rear = 0;  //头尾指针置为0,对列为空
     24     return Ok;
     25 }
     26 
     27 //求队列长
     28 int QueueLength(SqQueue Q)
     29 {
     30     return (Q.rear - Q.front + Maxsize) % Maxsize;
     31 }
     32 
     33 //入队
     34 int EnQueue(SqQueue &Q, int e)
     35 {
     36     if((Q.rear + 1) % Q.queuesize == Q.front)
     37         return Error; //队满
     38     Q.base[Q.rear] = e; //保存队头元素
     39     Q.rear = (Q.rear + 1) % Q.queuesize; //队头指针加1
     40     return Ok;
     41 }
     42 
     43 //出对
     44 int DeQueue(SqQueue &Q)
     45 {
     46     if(Q.front == Q.rear)  //队空
     47         return Error;
     48     Q.front = (Q.front + 1) % Q.queuesize;
     49     return Ok;
     50 }
     51 
     52 //取队头元素
     53 int GetHead(SqQueue Q)
     54 {
     55     if (Q.front != Q.rear)  //队非空
     56     {
     57         return Q.base[Q.front]; //返回队头元素的值,队头指针不变
     58     }
     59 }
     60 
     61 //输出
     62 void printqueue(SqQueue Q)
     63 {
     64     while(Q.front != Q.rear)
     65     {
     66         cout << GetHead(Q) << " ";
     67         Q.front = (Q.front + 1) % Q.queuesize;
     68         //DeQueue(Q);
     69     }
     70     cout << endl;
     71 }
     72 int main()
     73 {
     74     SqQueue q;
     75     Init_Queue(q);
     76     cout << "请输入数字:(0-3):0--退出,1--求表长,2--DeQue,3--EnQue
    ";
     77     for (int i = 0; i < 10; ++i)
     78         EnQueue(q, i);
     79     int c, d;
     80     for(int i = 0; i < 4; ++i)
     81     {
     82         cin >> c;
     83         if(c == 1)
     84             cout << QueueLength(q) << endl;
     85         else if(c == 2)
     86         {
     87             cout << "yuan:";
     88             printqueue(q);
     89             DeQueue(q);
     90             cout << "DE hou:";
     91             printqueue(q);
     92             cout << "Len=: " << QueueLength(q) << endl;
     93         }
     94         else if(c == 3)
     95         {
     96             cout << "yuan:";
     97             printqueue(q);
     98             cout << "input num:";
     99             cin >> d;
    100             EnQueue(q, d);
    101             cout << "En hou:";
    102             printqueue(q);
    103             cout << "Len=: " << QueueLength(q) << endl;
    104         }
    105         else if(c == 0)
    106         {
    107             return 0;
    108         }
    109     }
    110     return 0;
    111 }
  • 相关阅读:
    queue
    hiho1095(二分)
    uvaliva3942(trie树)
    hiho1014(trie树)
    uvalive4329(树状数组)
    Dropping tests POJ
    linux mysql命令
    linux文件系统和mount(硬盘,win分区,光驱,U盘)
    linux共享windows资料
    linux常用命令
  • 原文地址:https://www.cnblogs.com/DSYR/p/9163114.html
Copyright © 2011-2022 走看看