循环队列的实现
来源:互联网 发布:双系统怎样重装ubuntu 编辑:程序博客网 时间:2024/06/07 00:20
主要代码:
Status InitQueue(SqQueue &Q){ /* TODO (#2#): 构造空队列 */Q.base=(ElemType *)malloc(MAXQSIZE*sizeof(ElemType));if(!Q.base)return ERROR; //TODO: 替换这行代码,以下同Q.front=Q.rear=0;return OK; //....................................}//销毁队列Q // 前提:队列Q已存在 Status DestroyQueue(SqQueue &Q){ /* TODO (#3#): 销毁队列 */ return ERROR; //....................................}//将队列Q清为空队列// 前提:队列Q已存在Status ClearQueue(SqQueue &Q){ /* TODO (#4#): 清空队列*/ if(!Q.base)return ERROR;Q.front=Q.rear;return OK; //....................................}//若队列Q为空,则返回TRUE,否则FALSE // 前提:队列Q已存在Status QueueEmpty(SqQueue Q){ /* TODO (#5#): 判断队列是否为空 */if(Q.front==Q.rear)return TRUE; return FALSE; //....................................}//返回队列Q的元素个数,即队列长度// 前提:队列Q已存在 int QueueLength(SqQueue Q){ /* TODO (#6#): 返回队列长度 */int i;i=(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE; return i; //....................................}//取队列Q头元素用e返回// 前提:队列Q存在且非空Status GetHead(SqQueue Q, ElemType &e){ /* TODO (#7#): 取队头元素存入e */if(Q.front==Q.rear)return ERROR;//返回操作状态(成功:OK,失败:ERROR)e=Q.base[Q.front];return OK; //....................................}//插入元素e作为队列Q的新的队尾元素// 前提:队列Q存在且未满Status EnQueue(SqQueue &Q, ElemType e){ /* TODO (#8#): 元素e入队列 */if((Q.rear+1)%MAXQSIZE==Q.front)return ERROR;//返回操作状态(成功:OK,失败:ERROR)Q.base[Q.rear]=e;Q.rear=(Q.rear+1)%MAXQSIZE;return OK; //....................................}//删除队列Q的队头元素,并用e返回 // 前提:队列Q存在且非空 Status DeQueue(SqQueue &Q, ElemType &e){ /* TODO (#9#): 出队列存入e */if(Q.front==Q.rear)return ERROR;//返回操作状态(成功:OK,失败:ERROR)e=Q.base[Q.front];Q.front=(Q.front+1)%MAXQSIZE;return OK; //....................................}////////////////////////////////////////////TODO: 定义好 SqQueue 类型后使用 QueueView 函数 #include <stdio.h>//查看队列状态(调试用)void QueueView(SqQueue Q){ //extern void PrintElem(ElemType e);//打印数据用 int i=0; if(Q.front<0||Q.front>=MAXQSIZE||Q.rear<0||Q.rear>=MAXQSIZE){ printf("队列未初始化\n"); return ; } printf("---Queue View---\n"); printf("front=%d , rear=%d\n", Q.front, Q.rear); if(Q.rear>=Q.front) { printf("..... ......\n"); for(i=Q.front; i<Q.rear; i++) { printf("%5d\t", i); printf("%d",Q.base[i]); printf("\n"); } if(i<MAXQSIZE) printf("..... ......\n"); } else { for(i=0; i<Q.rear; i++) { printf("%5d\t", i); printf("%d",Q.base[i]); printf("\n"); } printf("..... ......\n"); for(i=Q.front; i<MAXQSIZE; i++) { printf("%5d\t", i); printf("%d",Q.base[i]); printf("\n"); } } printf("--- view end ---\n");}
完整代码连接:
点击打开链接
阅读全文
0 0
- 队列----循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- unity优化《一》
- 仿QQ设置字体大小自定义SeekBar
- ubuntu 16.04 下重置 MySQL 的root密码(忘记root密码)
- 如何使用rem,为什么rem不生效?
- mysql查询表和列的注释、添加列
- 循环队列的实现
- 可选操作和UnsupportedOperationException
- css 手风琴菜单效果,图片动画
- 软考错题合集之14-11-AM
- 本周互动留言抽奖结果公布!!
- @Controller和@RestController的区别
- 打砖块
- [Unity]简单的socket客户端和服务器
- java.nio.channels.IllegalBlockingModeException