当前位置:首页 >> 其它课程 >>

严蔚敏版数据结构链队列


#include <stdio.h> #include <malloc.h> typedefstruct Student/*定义学生类 */ { intnum; char name[20]; char sex[2]; int age; float grade; }stu; typedefstructQNode { stu data; structQNode

*next; }qnode,*queue; typedefstruct { queue front; queue rear; }linkqueue; linkqueueInitQueue()/*构造空队列 */ { linkqueue q; q.front=q.rear=(queue)malloc(sizeof(qnode)); if(!q.front) printf("OVERFLOW\n"); else { q.front->next=NULL; printf("OK\n"); return q; } } void DestroyQueue(linkqueue q)/*销毁队列 */ { queue p; while(q.front->next) { p=q.front->next; q.front->next=p->next; free(p); } free(q.front); printf("OK\n");

} linkqueueClearQueue(linkqueue q)/*清空队列 */ { queue p; while(q.front->next) { p=q.front->next; q.front->next=p->next; if(q.rear==p) q.rear=q.front; free(p); } printf("OK\n"); return q; } void QueueEmpty(linkqueue q)/*判断队列空*/ { if(q.rear==q.front) printf("TRUE\n"); else printf("FLASE\n"); } intQueueLength(linkqueue q)/*返回队列长度 */ { queue p=q.front->next; inti=0; while(p) { i++; p=p->next; } return (i); } stuGetHead(linkqueue q)/*返回队头元素,并返回 TRUE*/ { if(q.rear==q.front) printf("ERROR\n 以下输出为无效\n"); else { printf("OK\n"); return(q.front->next->data); } } linkqueueEnQueue(linkqueue q)/*插入函数*/

{ queue p; p=(queue)malloc(sizeof(qnode)); if(!p) printf("OVERFLOW\n"); else { printf("请输入插入学生的数据\n 学号:"); scanf("%d",&p->data.num); printf("姓名:"); scanf("%s",&p->data.name); printf("年龄:"); scanf("%d",&p->data.age); printf("性别:"); scanf("%s",&p->data.sex); printf("成绩:"); scanf("%f",&p->data.grade); p->next=NULL; q.rear->next=p; q.rear=p; printf("OK\n"); return q; } } linkqueueDeQueue (linkqueue q)/*删除函数*/ { queue p; stu e; if(q.rear==q.front) printf("ERROR\n"); else { p=q.front->next; e=p->data; printf("删除的学生信息为:\n 学号:%d\n 姓名:%s\n 性别:%s\n 年龄:%d\n 成 绩:%f\nOK\n 删除后表为:\n",e.num,e.name,e.sex,e.age,e.grade); q.front->next=p->next; if(q.rear==p) q.rear=q.front; free(p); return q; } } void display(linkqueue s)/*输出函数 */

{ queue p; p=s.front->next; printf("***************学生信息*****************\n"); printf(" 学号姓名性别年龄成绩\n"); while(p) { printf("%d\t%s\t%s\t%d\t%f\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->dat a.grade); p=p->next; } printf("****************************************\n"); } void main() { linkqueue q; stu e; intn,i,j; q=InitQueue(); printf("请输入任意键进入菜单..........\n"); getchar(); for(;;) { printf("***********************菜单******************\n"); printf(" 1.建了一个空队列\n"); printf(" 2.构建一个有关学生信息的队列\n"); printf(" 3.销毁队列\n"); printf(" 4.将栈清为空队列\n"); printf(" 5.若栈为空队列返回 TRUE,否则返回 FLASE\n"); printf(" 6.返回队列长度\n"); printf(" 7.返回队头元素\n"); printf(" 8.插入新元素\n"); printf(" 9.删除队尾元素,返回其值\n"); printf(" 0.停止\n"); printf("***********************************************\n"); printf(" 请输入你的选择(0~9):\n"); scanf("%d",&n); switch(n) { case 1: { q=InitQueue();

printf("现在输出空队列\n"); display(q); break; } case 2: { printf("请输入学生个数:\n"); scanf("%d",&i); for(j=0;j<i;j++) { q=EnQueue(q); } printf("现在输出建立的学生信息队列\n"); display(q); break; } case 3:DestroyQueue(q);break; case 4:q=ClearQueue(q);break; case 5:QueueEmpty(q);break; case 6:{ printf("队列的长度为:%d\n",QueueLength(q)); break; } case 7:{ e=GetHead(q); printf("队头元素为:\n 学号:%d\n 姓名:%s\n 性别:%s\n 年龄:%d\n 成 绩:%f\n",e.num,e.name,e.sex,e.age,e.grade); break; } case 8:{ q=EnQueue(q); printf("插入后的学生信息:\n"); display(q); break; } case 9:{ q=DeQueue(q); printf("删除后学生信息:\n"); display(q); break; } case 0:exit(0); }

} }


相关文章:
严蔚敏版数据结构链队列
严蔚敏版数据结构链队列 隐藏>> #include <stdio.h> #include <malloc.h> typedefstruct Student/*定义学生类 */ { intnum; char name[20]; char sex[2]...
严蔚敏版数据结构所有算法代码
严蔚敏版数据结构所有算法代码_计算机软件及应用_IT/计算机_专业资料。严蔚敏版数据...队列---//---链队列的描述及操作---// typedef struct Node { int a; ...
链队列——队列的链式表示和实现(源代码)(数据结构)
链队列——队列的链式表示和实现(源代码)(数据结构)_计算机软件及应用_IT/计算机_专业资料。链队列——队列的链式表示和实现(数据结构) 数据结构试验链...
严蔚敏版数据结构循环双链表
严蔚敏版数据结构循环双链表_计算机软件及应用_IT/计算机_专业资料。#include <stdio...专题推荐 严蔚敏版数据结构顺序队... 严蔚敏版数据结构链队列 1/2 相关文档...
严蔚敏版数据结构参考答案
严蔚敏版数据结构参考答案_理学_高等教育_教育专区。数据结构( C语言版) (第 ...将新的节点插入到链队列的尾部,同时将 尾指针指向这个节点;出队时,删除的是队...
严蔚敏版数据结构所有算法代码
严蔚敏版数据结构所有算法代码 ---线性数据结构---2013 年 7 月 //线性表、...队列---//---链队列的描述及操作---// typedef struct Node { int a; ...
清华大学严蔚敏数据结构课后习题答案 第三章(栈与队列)
清华大学严蔚敏数据结构课后习题答案 第三章(栈与队列)_理学_高等教育_教育专区。严蔚敏数据结构课后习题答案清华大学严蔚敏数据结构课后习题答案 第三章(栈与队列) ...
数据结构(严蔚敏)上机代码完整版
数据结构(严蔚敏)上机代码完整版_计算机软件及应用_...{ //在带头结点的单链线性表 L 中,删除第 i ...(); } 第五次上机 /*队列的链式存储*/ #...
严蔚敏-数据结构栈和队列习题
严蔚敏-数据结构栈和队列习题_工学_高等教育_教育专区。数据结栈和队列习题和详细...已知链队列的头尾指针分别是 f 和 r,则将值 x 入队的操作序列是___。 【...
严蔚敏版数据结构课后习题答案
严蔚敏版数据结构课后习题答案_高等教育_教育专区。...均以单链 表作存储结构, 请编写算法将 A 表和 ...试编写相应的队列初始化、入队 列何处队列的算法。...
更多相关标签:
数据结构链式队列 | 数据结构链队列 | 数据结构链队列的实现 | 数据结构 严蔚敏 | 数据结构 严蔚敏 pdf | 严蔚敏数据结构视频 | 数据结构严蔚敏答案 | 数据结构 严蔚敏 ppt |