循环队列的基本操作
来源:互联网 发布:算法有哪些 编辑:程序博客网 时间:2024/05/17 03:20
VC6.0下写的:
#include<stdio.h>#include<stdlib.h>#define MAXSIZE 100typedef char datatype;typedef struct{ datatype *base; //存储空间的基地址 int front; //记录队头的下标 int rear; //记录队尾下一个位置的下标}Queue;int judge = 0; //判断队是否存在(0为不存在,1为存在)Queue initQueue() //构造空队{ Queue Q; Q.base = (datatype *)malloc(sizeof(datatype) * MAXSIZE); if (judge == 1) { printf("队列已存在!\n"); free(Q.base); return Q; } if (!Q.base) { printf("构造空队失败!\n"); return Q; } judge = 1; Q.front = 0; Q.rear = 0; printf("构造空队成功\n"); return Q;}Queue push_Queue(Queue Q) //入队{ datatype data; if (judge == 0) { printf("队列不存在!\n"); return Q; } if ((Q.rear + 1) % MAXSIZE == Q.front) { printf("队已满,无法入队!\n"); return Q; } printf("请输入要入队的元素:\n"); scanf("%c", &data); getchar(); Q.base[Q.rear] = data; Q.rear = (Q.rear + 1) % MAXSIZE; printf("元素%c已入队!\n", data); return Q;}Queue pop_Queue(Queue Q) //出队{ datatype data; if (judge == 0) { printf("队列不存在!\n"); return Q; } if (Q.rear == Q.front) { printf("队列已空,无法出队!\n"); return Q; } data = Q.base[Q.front]; Q.front = (Q.front + 1) % MAXSIZE; printf("元素%c已出队\n", data); return Q;}void show_Queue(Queue Q) //显示队(顺序为从队头到队尾){ int i; if (judge == 0) { printf("队列不存在!\n"); return; } if (Q.rear == Q.front) { printf("队为空\n"); return ; } i = Q.front; printf("队遍历为:\n"); while (i != Q.rear) { printf("%c ", Q.base[i]); i++; }}void length_Queue(Queue Q){ int i, n = 0; if (judge == 0) { printf("队列不存在!\n"); return; } i = Q.front; while (i != Q.rear) { i++; n++; } printf("队列的长度为%d\n", n);}void destroy_Queue(Queue Q){ if (judge == 0) { printf("队列不存在!\n"); return; } free(Q.base); judge = 0; printf("队列已销毁!\n");}void caidan() //输出菜单{ printf(" 循环队列子系统\n"); printf("**************************************************\n"); printf("* 1-----构造空队 *\n"); printf("* 2-----入队 *\n"); printf("* 3-----出队 *\n"); printf("* 4-----显示队 *\n"); printf("* 5-----求队列长度 *\n"); printf("* 6-----销毁队 *\n"); printf("* 0-----结束 *\n"); printf("**************************************************\n");}int main(){ caidan(); while(1) { int ch; Queue Q; printf("\n***************************************************\n"); printf("请输入你要进行的操作对应的数字:"); scanf("%d",&ch); getchar(); switch(ch) { case 1: //构造空队 { Q = initQueue(); break; } case 2: //入队 { Q = push_Queue(Q); break; } case 3: //出队 { Q = pop_Queue(Q); break; } case 4: //显示队 { show_Queue(Q); break; } case 5: //求队列长度 { length_Queue(Q); break; } case 6: //销毁队 { destroy_Queue(Q); break; } case 0: return 0; } } return 0;}
阅读全文
1 0
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 队列及循环队列的基本操作
- 循环队列基本操作
- 循环队列基本操作
- 循环队列基本操作
- 简单驱动程序框架
- 计蒜客 等和的分隔子集 DP
- Hadoop入门概念
- linux修改iptables命令
- h5页面定时跳转+读秒
- 循环队列的基本操作
- exercise. 由键盘输入三个数,输出最大的数
- 界面设计
- 图形用户界面作业2
- 购车模糊查询+排序+删除+修改
- 6.C语言(3)(4)
- squeeze函数的作用
- 让你彻底明白JAVA中堆与栈的区别
- 洛谷P2563 [AHOI2001]质数和分解