c语言数据结构:用标志位实现循环队列

  1 #include<stdio.h>  2 #include<stdlib.h>  3   4 #define MAXSIZE 10//定义队列长度  5   6 static int flag=0;//定义标志位  7   8 typedef struct {  9     int *base; 10     int front; 11     int rear; 12 }SqQueue;//创建结构体 13  14 int InitQueue(SqQueue &Q){ 15     Q.base=(int*)malloc(MAXSIZE*sizeof(int)); 16     if(!Q.base) 17         return 0; 18     else{ 19         Q.front=Q.rear=0; 20         return 1; 21     } 22 }//创建空链表 23  24  25 int IsEmpety(SqQueue &Q){ 26     if(flag==0&&Q.front==Q.rear){ 27         printf("队列为空\n"); 28         return 0; 29     } 30     else  31         return 1; 32  33 }//判断是否为空 34  35 int IsFull(SqQueue &Q){ 36     if(flag==1&&Q.front==Q.rear){ 37         printf("队列已满\n"); 38         return 0; 39     } 40     else 41         return 1; 42 }//判断是否已满 43  44 void AddQueue(SqQueue &Q){ 45     if(IsFull(Q)==1){ 46         int e; 47         printf("请输入元素:\n"); 48         scanf("%d",&e); 49         Q.base[Q.rear]=e; 50         Q.rear=(Q.rear+1)%MAXSIZE; 51         flag=1; 52     } 53 }//添加元素 54  55 void DeleteQueue(SqQueue &Q){ 56     if(IsEmpety(Q)==1){ 57         int e; 58         e=Q.base[Q.front]; 59         Q.front=(Q.front+1)%MAXSIZE; 60         flag=0; 61         printf("%d\n",e); 62     } 63 }//删减元素 64  65 void Action(SqQueue &Q){ 66     printf("1.入队\n"); 67      printf("2.使队头元素出队,并返回它的值\n"); 68      printf("3.退出\n"); 69      int a; 70      scanf("%d",&a); 71       switch(a) 72       { 73       case 1: 74       75           AddQueue(Q); 76           break; 77       case 2: 78            79           DeleteQueue(Q); 80           break; 81       case 3: 82           exit(0); 83       default: 84          printf("输入不合法,请重新输入\n"); 85  86       } 87       Action(Q); 88 }//操作选项 89  90 int main(){ 91     SqQueue Q; 92     if(InitQueue(Q)) 93         printf("创建成功。\n"); 94     else{ 95         printf("创建失败。"); 96         system("pause"); 97         return 0; 98     } 99     100     Action(Q);101     102     system("pause");103     free(Q.base);104     return 0;105 106 107 }//主函数

虽然用标志位实现了,可是将int型数组换为char型数组时会出现错误,在此保留疑问,待解决。

有的旅行时为了寻找逝去的年华,重温青春的惆怅。

c语言数据结构:用标志位实现循环队列

相关文章:

你感兴趣的文章:

标签云: