• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  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型数组时会出现错误,在此保留疑问,待解决。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#字符串默认值发布时间:2022-07-14
下一篇:
第二章:C#.NET面向对象——面向对象程序设计5(委托与事件) ...发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap