数据结构--实验2--队列的操作

Posted zongyao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构--实验2--队列的操作相关的知识,希望对你有一定的参考价值。

  1 #include"stdio.h"
  2 #include"malloc.h"
  3 typedef int datatype;
  4 
  5 #define MAXSIZE 50 //队列的最大容量
  6 //定义队列结构体
  7 typedef struct
  8 {
  9     datatype data[MAXSIZE];
 10     int front,real;
 11     int num; //队列中元素的个数 
 12 } c_SeQueue;
 13 //置空队
 14 c_SeQueue* Init_SeQueue(){
 15     c_SeQueue *q;
 16     q=new c_SeQueue;
 17     q->front=q->real=MAXSIZE-1;
 18     q->num=0;
 19     return q; 
 20 }
 21 //入队
 22 int In_SeQueue(c_SeQueue *q,datatype x){
 23     if(q->num==MAXSIZE){
 24         printf("队满");
 25         return -1;
 26     }
 27     else{
 28         q->real=(q->real+1) % MAXSIZE;
 29         q->data[q->real]=x;
 30         q->num++;
 31         return 1;
 32         
 33     }
 34 } 
 35 //出队
 36 int Out_SeQueue(c_SeQueue *q,datatype *x){
 37     if(q->num==0){
 38         printf("队空");
 39         return -1;
 40     }
 41     else{
 42         *x=q->data[q->front];
 43         q->front=(q->front+1) % MAXSIZE; 
 44         *x=q->data[q->front];
 45         q->num--;
 46         return 1;
 47     }
 48     
 49 } 
 50 //判断空
 51 int isEmpty(c_SeQueue *q)
 52 {
 53     if(q->num==0)
 54         return 1;
 55         else
 56         return 0;
 57     
 58 } 
 59 //显示队列
 60 void displayQueue(c_SeQueue q){
 61 
 62     while((q.front)!=q.real)
 63     {
 64         q.front=(q.front+1)%MAXSIZE;
 65         printf("%-3d",q.data[q.front]);
 66         
 67     }
 68 
 69 }
 70 void main()
 71 {
 72     c_SeQueue  *sq;
 73 //    LQueue  *Lq;
 74     int j,k;
 75     datatype x;
 76     sq=Init_SeQueue();
 77    // Lq=Init_Queue();
 78     do
 79     {   
 80     printf("



");
 81     printf("			 队列子系统
");
 82     printf("		*******************************
");
 83     printf("		*        1----进 队 列     *
");
 84     printf("		*        2----出 队 列    *
");
 85     printf("		*        3----队列空否    *
");
 86     printf("		*        4----显示队列    *
");
 87     printf("		*        0----返  回    *
");
 88     printf("		*******************************
");
 89     printf("		 请选择菜单项(0-4):");
 90     scanf("%d",&k);getchar();
 91     switch(k){
 92         case 1:
 93         printf("
   请输入要进队列的数据:");
 94         scanf("%d",&x);
 95         j=In_SeQueue(sq,x);
 96         break;
 97         case 2:
 98             j=Out_SeQueue(sq,&x);
 99         break;
100         case 3:
101             j=isEmpty(sq);
102             if(j==1)
103                 printf("此队列为空");
104                 else
105                 printf("队列不为空");
106         break;
107         case 4:
108             printf("
   队列元素有:  ");
109             displayQueue(*sq);
110         break;
111     
112         
113     }
114     }while(k!=0);
115 }

 

以上是关于数据结构--实验2--队列的操作的主要内容,如果未能解决你的问题,请参考以下文章

队列的操作实验(数据结构)

数据结构--实验2--队列的操作

[NEFU锐格 数据结构]实验二 栈和队列有关的操作

数据结构(c语言版)队列基本操作的实现

顺序栈

顺序栈