




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/*题目:设计一个整型的链队列。* 编写队列的进队、出队、读队头元素、显示队列中全部元素程序。*题目:设计一个输入限制性的双队列,*要求:输入只能在一端进行,而输出可以选择从队头输出* 或队尾输出,全部选择完毕后能显示所选择的输出结果。*题目:设计一个选择式菜单,以菜单方式选择队列的各种基本操作。* 队 列 子 系 统* * * 1-进 队 * * 2-出 队 * * 3-读队头元素 * * 4-显 示 * * 5-双 队 列 * * 0-返 回 * * 请选择菜单号(0-5):*/#include <stdio.h>#include <stdlib.h>#define
2、 QUEUEMAX 30typedef struct /顺序队列 int queuQUEUEMAX; int front; /队头 int rear; /队尾linkQueues;typedef struct queuenode int data; struct queuenode *next;queueNode;typedef struct queueNode *front; /队头指针 queueNode *rear; /队尾指针linkQueue;void inQueue(linkQueue *p);void outQueue(linkQueue *p);void readFront(l
3、inkQueue *p);void showQueue(linkQueue *p);void inQueues(linkQueues *p);void outQueue_front(linkQueues *p);void outQueue_rear(linkQueues *p);void doubleQueue();/*Function: main()Description: 主调函数Calls: inQueue() outQueue() readQueue() showQueue()Input: NULLReturn: voidOthers: NULL*/void main() int ch
4、oice, i = 1; linkQueue *p = (linkQueue *)malloc(sizeof(linkQueue); p->front = p->rear = NULL; /链队列队头队尾的指针初始化 while (i) printf("n 队 列 子 系 统n"); printf("*n"); printf("* 1-进 队 *n"); printf("* 2-出 队 *n"); printf("* 3-读队头元素 *n"); printf("* 4-显
5、示 *n"); printf("* 5-双 队 列 *n"); printf("* 0-返 回 *n"); printf("*n"); printf("请选择菜单号(0-5):"); fflush(stdin); /清空输入的缓存区 choice = getchar(); switch(choice) case '1': inQueue(p); /入队 break; case '2': outQueue(p); /出队 break; case '3': re
6、adFront(p); /读对头元素 break; case '4': showQueue(p); /读队中所有元素 break; case '5': doubleQueue(); break; case '0': i = 0; break; default: i = 1; break; /*Function: inQueue()Description: 入队Calls: NULLInput: p 链队列指针Return: voidOthers: NULL*/void inQueue(linkQueue *p) queueNode *q; int
7、 x; q = (queueNode *)malloc(sizeof(queueNode); printf("请输入入队的整数:"); scanf("%d", &x); getchar(); q->data = x; q->next = NULL; if (p->front = NULL) /队头指针为空时 p->front = q; /队头指针指向结点 p->rear = q; /队尾指针指向结点 else p->rear->next = q; /队列元素增加 p->rear = q; if (q
8、) /判断新的元素指针是否正确 printf("%d 入队成功!n", x); /*Function: outQueue()Description: 出队Calls: NULLInput: p 链队列指针Return: voidOthers: NULL*/void outQueue(linkQueue *p) queueNode *q; int x; if (p->front = NULL) /队头指针为空时 printf("出队失败!n"); else q = p->front; x = q->data; p->front =
9、p->front->next; if (p->front = NULL) /若队头指针为空,则队尾指针也要为空。 p->rear = NULL; free(q); printf("%d 出队成功n", x); /*Function: readFront()Description: 读队头元素Calls: NULLInput: p 链队列指针Return: voidOthers: NULL*/void readFront(linkQueue *p) int x; if (p = NULL | p->front = NULL) /队列不存在或队头指
10、针为空 printf("读对头元素失败!n"); else x = p->front->data; printf("队头元素为:%dn", x); /*Function: showQueue()Description: 显示队列中全部元素Calls: NULLInput: p 链队列指针Return: voidOthers: NULL*/void showQueue(linkQueue *p) queueNode *q; if (p->front = NULL) printf("队列为空!n"); else prin
11、tf("队列元素为:"); q = p->front; while (q != NULL) printf("%4d", q->data); q = q->next; printf("n"); /*Function: inQueues()Description: 顺序队列入队Calls: NULLInput: p:顺序队列指针Return: voidOthers: NULL*/void inQueues(linkQueues *p) int x; printf("请输入入队元素:"); scanf(
12、"%d", &x); p->rear = (p->rear+)%(QUEUEMAX); /确定插入位置 if (p->front = p->rear) /判断队列是否已满 printf("队列已满!n"); else p->queup->rear = x; /入队 printf("%d入队成功!n", x); /*Function: outQueue_front()Description: 顺序队列队头出队Calls: NULLInput: p:顺序队列指针Return: voidOther
13、s: NULL*/void outQueue_front(linkQueues *p) int y; if (p->front = p->rear) printf("队列为空!n"); else y = p->queu+(p->front); /先确定出队位置再队头出队 printf("队头%d出队成功!n", y); if (p->front = QUEUEMAX) /队列循环 p->front = 0; /*Function: outQueue_rear()Description: 顺序队列队尾出队Calls: N
14、ULLInput: p:顺序队列指针Return: voidOthers: NULL*/void outQueue_rear(linkQueues *p) int j; if (p->front = p->rear) printf("队列为空!n"); else j = p->queup->rear-; /先确定出队位置再队尾出队 printf("队尾%d出队成功!n", j); if (p->rear < 0 && p->front != -1) /队列循环 p->rear = QUEUEMAX-1; /*Function: doubleQueue()Description: 有限制的双队列Calls: inQueues() outQueue_front() outQueue_rear()Input: voidReturn: voidOthers: NULL*/void doubleQueue() linkQueues p; /初始化 p.front = -1; p.rear = -1; int i, j; for (i = 0; i < 6; i+) inQueues(&p); /入队 j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 碘化钠在消毒剂中的应用考核试卷
- 煤炭行业的科技创新与行业智能化考核试卷
- 木材加工过程中的生产组织考核试卷
- 木制容器生产过程信息化考核试卷
- 罐装水生产过程中的品质保障措施考核试卷
- 科学控糖与健康体重管理
- 中学生五爱教育主题班会
- 高中生生涯规划教育指导
- 2025企业股权转让合同
- 学前教育大学生职业生涯规划
- GB/T 16955-1997声学农林拖拉机和机械操作者位置处噪声的测量简易法
- GB/T 15593-2020输血(液)器具用聚氯乙烯塑料
- GB 16410-2007家用燃气灶具
- 铁碳合金的相图解读
- 2023年复旦大学博士研究生入学考试专家推荐信模板
- 中小学教师资格证面试课件讲义
- 全国初中英语优质课大赛一等奖《八年级Unit 6An old man》说课课件
- 云南省饮用水生产企业名录534家
- 湖北地区医院详细名单一览表
- 麦肯锡入职培训第一课:让职场新人一生受用的逻辑思考力新员工培训教材
- 金属压铸机的plc控制
评论
0/150
提交评论