顺序队列的表示
2015-07-25 09:56
239 查看
#define QUEUESIZE 50//定义队列的最大容量 typedef char DataType;//定义队列元素的类型为字符类型 #include<stdio.h> typedef struct Squeue//顺序队列类型定义 { DataType queue[QUEUESIZE]; int front,rear; }SeqQueue; char x; void InitQueue(SeqQueue *SQ) //将顺序队列初始化为空队列只需要把队头指针和队尾指针同时置为0 { SQ->front=SQ->rear=0; } int QueueEmpty(SeqQueue SQ) //判断队列是否为空,队列为空返回1,否则返回0 { if(SQ.front==SQ.rear)//判断队头指针和队尾指针是否相等 return 1; else return 0; } int EnQueue(SeqQueue *SQ,DataType e) //将元素e插入到顺序队列SQ中,插入成功返回1,否则返回0 { if(SQ->rear==QUEUESIZE)//在插入新的元素之前,判断队列是否已满 return 0; SQ->queue[SQ->rear]=x;//再队尾插入元素x SQ->rear=SQ->rear+1;//队尾指针向后移动一个位置 return 1; } int DeQueue(SeqQueue *SQ,DataType *e) //删除顺序队列中的队头元素,并将该元素赋值给e,删除成功返回1,否则返回0 { if(SQ->front==SQ->rear)//在删除元素之前,判断队列是否为空 return 0; else { *e=SQ->queue[SQ->front];//将要删除的元素赋值给e SQ->front=SQ->front+1;//将队头指针向后移动一个位置,指向新的队头 return 1; } } void main() { SeqQueue Q; char str[]="ABCDEFGH"; int i,length=8; char x; InitQueue(&Q); for(i=0;i<length;i++) { EnQueue(&Q,str[i]);//将字符依次插入到顺序队列中 } DeQueue(&Q,&x); printf("出队列的元素为:%c\n",x);//显示输出出队列的元素 printf("顺序队列中的元素为:\n"); if(!QueueEmpty(Q)) { for(i=Q.front ;i<Q.rear ;i++) //输出队头指针到队尾指针之间的元素,即队列的所有元素 printf("%c",Q.queue [i]); } }
相关文章推荐
- 更换显卡(nvidia)后进不去的解决办法,N卡驱动安装方法
- linux mysql 操作命令
- Xamarin.Android开发实践(十五)
- 不要62(HDU 2089数位dp入门)
- 【HTML】DAY 2
- PHP文件系统
- HDU 2473 Junk-Mail Filter (并查集的删除操作)
- Xamarin.Android开发实践(十四)
- 第一个app-进阶二::1、EditText退格::2、焦点转移--更人性化
- java新手笔记12 单例
- 软件项目质量管理
- 排序都有哪几种方法?请列举。用JAVA实现一个快速排序?
- 1121 : 二分图一•二分图判定
- Win10进入倒计时 Win8必升Win10新系统的理由
- android SoundPool调用pause stop方法使用注意问题
- iOS- 网络请求的两种常用方式GET & POST的区别
- 可笑的unsigned double http://blog.csdn.net/suhuaiqiang_janlay/article/details/6078034
- iOS 调试
- leetCode 90.Subsets II(子集II) 解题思路和方法
- 使用JS charts来画图表(一)——条形图