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

严蔚敏版数据结构链队列


#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); }

} }


相关文章:
严蔚敏版数据结构所有算法代码
严蔚敏版数据结构所有算法代码 ---线性数据结构---2013 年 9 月 //线性表、...队列---//---链队列的描述及操作---// typedef struct Node { int a; ...
严蔚敏版数据结构所有算法代码
严蔚敏版数据结构所有算法代码_计算机软件及应用_IT/计算机_专业资料。严蔚敏版数据...队列---//---链队列的描述及操作---// typedef struct Node { int a; ...
数据结构(C语言版)第2版习题答案—严蔚敏
数据结构(C语言版)第2版习题答案—严蔚敏_计算机软件及应用_IT/计算机_专业资料...将新的节点插入到链队列的尾部,同时将 尾指针指向这个节点;出队时,删除的是队...
清华大学严蔚敏数据结构课后习题答案 第三章(栈与队列)
清华大学严蔚敏数据结构课后习题答案 第三章(栈与队列)_理学_高等教育_教育专区。严蔚敏数据结构课后习题答案清华大学严蔚敏数据结构课后习题答案 第三章(栈与队列) ...
严蔚敏版数据结构习题及参考答案
数据结构题集答案 113页 免费 严蔚敏数据结构(c语言版... 36页 免费 数据...15. 无论对于顺序存储还是链式存储的栈和队列来说,进行插入或删除运算的时间复...
严蔚敏数据结构各章习题及答案
严蔚敏数据结构(c语言版... 2页 免费 【数据结构精品】严蔚敏《... 11页...无论对于顺序存储还是链式存储的栈和队列来说, 进行插入或删除运算的时间复杂度...
数据结构(严蔚敏)上机代码完整版
数据结构(严蔚敏)上机代码完整版_计算机软件及应用_IT/计算机_专业资料。数据结构...(); } 第五次上机 /*队列链式存储*/ #include <stdio.h> #include <...
数据结构老师给的复习要点(严蔚敏版)
数据结构老师给的复习要点(严蔚敏版)_工学_高等教育_教育专区。第一章 1. ...链式存储的队列的插入操作 算法描述: 第一步,利用指针创建新结点,新节点的数据...
数据结构经典代码(严蔚敏)
数据结构经典代码(严蔚敏)_IT/计算机_专业资料。数据结构经典代码(严蔚敏)/...{ PNode f; PNode r; }; /* 链接队列类型定义 */ /* 头指针 */ /*...
《数据结构》(C语言版)严蔚敏著_数据结构实验指导
数据结构-清华大学严蔚敏... 814页 1下载券 严蔚敏C语言版《数据结构... 96...二、实验预习说明以下概念 1、顺序栈: 2、链栈: 3、循环队列: 4、链队 三...
更多相关标签: