• 循环队列的顺序存储结构及其操作


     1 #include "stdafx.h"
     2 #include <iostream>
     3 #include <exception>
     4 using namespace std;
     5 
     6 //循环队列的顺序存储结构
     7 typedef int QElemType;
     8 typedef int Status;
     9 const int ok = 1;
    10 const int error = 0;
    11 const int maxSize = 5;
    12 
    13 typedef struct 
    14 {
    15     QElemType data[maxSize];
    16     int front;
    17     int rear;
    18 }SqQueue,*pSqQueue;
    19 
    20 //初始化队列
    21 Status InitQueue(SqQueue *Q)
    22 {
    23     Q->front = 0;
    24     Q->rear = 0;
    25     for(int i = 0;i!=maxSize;++i)
    26         Q->data[i]=0;
    27     return ok;
    28 }
    29 
    30 //获取队列长度
    31 int QueueLenght(const SqQueue *Q)
    32 {
    33     return (maxSize-Q->front+Q->rear)%maxSize;
    34 } 
    35 
    36 //入队操作,如果队列未满,则插入元素e为Q新的队尾元素
    37 Status EnQueue(SqQueue *Q,const int &e)
    38 {
    39     if((Q->rear+1)%maxSize==Q->front)
    40     {
    41         cout<<"队列已满,入队失败!"<<endl;
    42         return error;
    43     }
    44     Q->data[Q->rear]=e;
    45     Q->rear=(Q->rear+1)%maxSize;
    46     return ok;
    47 }
    48 Status DeQueue(SqQueue *Q)
    49 {
    50     if(Q->rear==Q->front)
    51         return error;
    52     cout<<"出队列:"<<Q->data[Q->front]<<endl;;
    53     Q->front=(Q->front+1)%maxSize;
    54     return ok;
    55 }
    56 void outputQueue(const SqQueue *Q)
    57 {
    58     if(Q->rear == Q->front)
    59     {
    60         cout<<"队列空了!"<<endl;
    61         return ;
    62     }
    63 
    64     if(Q->rear>Q->front)
    65     {
    66         for(int i = Q->front ;i != Q->rear;i++)
    67             cout<<Q->data[i]<<"  ";
    68     }
    69     else
    70     {
    71         for(int i = Q->front;i!=maxSize;++i)
    72         {
    73             cout<<Q->data[i]<<"  ";
    74         }
    75         for(int j = 0;j!=Q->rear;++j)
    76         {
    77             cout<<Q->data[j]<<"  ";
    78         }
    79     }
    80 }
    81 int _tmain(int argc, _TCHAR* argv[])
    82 {
    83     SqQueue *qQueue = new SqQueue;
    84     InitQueue(qQueue);
    85     EnQueue(qQueue,1);
    86     EnQueue(qQueue,2);
    87     EnQueue(qQueue,3);
    88     EnQueue(qQueue,4);
    89     DeQueue(qQueue);
    90     DeQueue(qQueue);
    91     DeQueue(qQueue);
    92     DeQueue(qQueue);
    93     EnQueue(qQueue,5);
    94     DeQueue(qQueue);
    95     cout<<"队列长度为:"<<QueueLenght(qQueue)<<endl;
    96     outputQueue(qQueue);
    97     return 0 ;
    98 }
  • 相关阅读:
    ZOJ3861 Valid Pattern Lock
    ZOJ 3866 Cylinder Candy
    hdu 1729 Stone Game SG函数
    hdu 2546 饭卡 01背包
    hdu 2084 数塔
    中国科学院大学生创新实践训练计划-
    中国科技论文在线期刊模板出现了格式问题,怎么解决?
    1015. 德才论 (25)
    1014. 福尔摩斯的约会 (20)
    Ubuntu 14.0的安装及联网
  • 原文地址:https://www.cnblogs.com/crazycodehzp/p/3541730.html
Copyright © 2020-2023  润新知