天水师院数据结构实验

天水师院数据结构实验

ID:21713423

大小:103.50 KB

页数:7页

时间:2018-10-24

天水师院数据结构实验_第1页
天水师院数据结构实验_第2页
天水师院数据结构实验_第3页
天水师院数据结构实验_第4页
天水师院数据结构实验_第5页
资源描述:

《天水师院数据结构实验》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验名称:实验四队列设计与运用(实验报告)一.实验目的:1.熟悉队列的概念,加深对队列的理解;2.掌握对队列的设计与运用,如:队列的特点“先进先出”特点,完成顺序队列的基本操作。二.实验内容:1.设计自己的顺序队列(只处理整数,非通用),实现队列的基本功能:入队、出队;对上述功能进行测试(编写测试程序,验证你所设计的队列的正确性)。2.编写一个停车场便道管理程序,该便道只有一个出口和一个入口,实现等待车辆的进入和开出的记录,还可以记录便道是否为空,是否已满,这和队列的功能差不多,如先进先出、入队、出队等。三.实验方法:1.队列的基本操作:a.初始化顺序栈初始化顺序栈就

2、是构造一个空的循环队列,只需要把队头和队尾的指针置为0即可。b.判空队条件是front==rear,当满足该条件时,循环队列是空对,算法返回1,否则返回0。c.入队操作为:a判断循环队列是否为满;b.将新元素插入队尾指针所指的位置;c.队尾指针增1,指向新的队尾位置。d.出队操作步骤为:a.判断循环队列是否为空,若空则产生下溢出错误,退出算法;b.删除队头执政所指的元素,并赋给指定的变量;c.队头指针增1,指向新的队头位置。e.遍历队列该操作依次访问队列中的所有元素,并且每个元素只访问一次。2.问题转化对于停车场便道管理,假设该便道只能停放n辆汽车,且宽度只能停放一辆

3、汽车,只能按照车辆到达的时间的先后顺序依次停放,这就是入队和出队,然后检测停车场便道是否停满。实现该功能就是相当于对队列进行基本的操作,只要调用相应操作的函数即可。四.主程序程序代码:#include"stdio.#include"malloc.h"typedefstruct{//车辆信息charlisence[10];inttype;intstop;}CarInfo;typedefCarInfoDataType;/*便道类型*/typedefstructQNode{DataTypedata;structQNode*next;}LQNode,*PQNode;typed

4、efstruct{PQNodefront,rear;}LinkQueue;/*+++++++++++++++++++++++++++++++++++++*//*+++++++++++++++++++++++++++++++++++++*//*算法3-19初始化链队列*/intInitQueue(LinkQueue*Q){Q->front=Q->rear=(PQNode)malloc(sizeof(LQNode));if(!Q->front){printf("初始化队列失败!");return0;}Q->front->next=NULL;return1;}/*算法3

5、-20判空队*/intQueueEmpty(LinkQueueQ){if(Q.front==Q.rear)return1;elsereturn0;}/*算法3-21入队*/intEnQueue(LinkQueue*Q,DataTypee){PQNodep;p=(PQNode)malloc(sizeof(LQNode));if(!p){printf("内存分配失败,不能完成入队操作!");return0;}p->data=e;p->next=NULL;/*初始化入队结点*/Q->rear->next=p;Q->rear=p;return1;}/*算法3-22出队*/

6、intDeQueue(LinkQueue*Q,DataType*e){PQNodep;if(Q->front==Q->rear){printf("队列已空,不能完成出队操作!");return0;}p=Q->front->next;*e=p->data;Q->front->next=p->next;free(p);if(Q->rear==p)/*若删除的是队列中最后一个结点,则移动队尾指针*/Q->rear=Q->front;return1;}/*算法3-23取队头元素*/intGetHead(LinkQueueQ,DataType*e){PQNodep;if(Q

7、.front==Q.rear){printf("队列已空,不能完成取队头元素操作!");return0;}p=Q.front->next;*e=p->data;return1;}/*算法3-24销毁队列*/intDestroyQueue(LinkQueue*Q){while(Q->front){Q->rear=Q->front->next;free(Q->front);Q->front=Q->rear;}return1;}/*+++++++++++++++++++++++++++++++++++++*//*++++++++++++++++++++

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。