欢迎来到天天文库
浏览记录
ID:33037996
大小:60.92 KB
页数:8页
时间:2019-02-19
《数据结构与算法实验——利用栈逆置队列元素》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、利用栈逆置队列元素实验报告班级:通信1204班学号:0909123001姓名:谢崇贽利用栈逆置队列元素实验报告通信1204班谢崇贽实验名称利用堆栈将队列中的元素逆置实验目的1.会定义顺序栈和链栈的结点类型。2.掌握栈的插入和删除结点在操作上的特点。3.熟悉对栈的一些基木操作和具体的函数定义。4.会定义顺序队列和链队列的结点类型。实验内容编制一个能实现“利用堆栈将队列中的元素逆置”的程序。问题描述该程序的功能是实现用堆栈将队列中的元素逆置。该程序包括定义的栈结构类型、队列结构类型以及对每一种栈、毎一种队列操作的具体的函数定义和主函数。问题分析该实验是基于堆栈和队列
2、知识的基本功能实现。但相较于简单的顺序栈和队列的定义及操作来说,该实验需要进行一定的算法设计,更加考骑实习者的实践应用能力。为了程序的可观性,我选用了栈和队列的基木定义和操作函数(栈和队列的定义、出栈和入栈函数、出队和入队函数)进行程序设计。首先,我建立了一个初始队列,将队列的元素逐个出队并逐个压入预先定义好的栈中,然后再定义一个新队列,将栈中的元素逐个出栈并逐个插入新队列中,最后将初始队列和栈释放空间,至此,程序就可以完成了。实验步骤1.需求分析本演示程序用VC++编写,完成栈的初始化、入栈、出栈,队列的初始化、入队、出队等功能。①输入的形式和输入值的范围:插
3、入元素时需要输入插入的位置和元素的值;删除元素时输入删除元素的位置。在所有输入屮,元素的值都是整数②输出的形式:在所有三种操作中都显示操作是否正确以及操作后栈的内容。其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。①程序所能达到的功能:栈的初始化、入栈、出栈、取栈顶元素、队列的初始化、取队头元素、入队、出队。②测试数据:建立初始队列为1,2,3,4,5o1.概要设计1、为了实现上述程序功能,需要定义单链表的抽象数据类型:typedefstruct/*定义队列结构体类型*/{DataTypedata[MAXSIZE];intfront,rear;
4、}Sequeue;/*定义DataType为int类型*/typedefintDataType;严栈的结点类型=7#defineMAXSIZE100typedefstruct{DataTypedata[MAXSIZE];inttop;}Seqstack;严入队*/Sequeue*Enqueue(Sequeue*sq,intn)/*显示元素*/voidDisplay(Sequeue*s,intn)严取队列的头元素*/DataTypeFront(Sequeue*s)厂入栈:把队列内容入栈*/Seqstack*Push(Seqstack*p,Sequeue*s,int
5、n)/*出栈*/DataTypePop(Seqstack*q)2、本程序包含5个函数:(1)主函数:main()(2)入栈函数:Seqstack*Push(Seqstack*p,Sequeue*s,intn)(3)出栈函数:DataTypePop(Seqstack*q)(4)取队头元素操作:DataTypeFront(Sequeue*s)(5)入队列操作:Sequeue*Enqueue(Sequeue*sq,intn)函数说明#include#include#defineMAXSIZE100typedefintDataTyp
6、e;/*队列结构=7typedefstructDataTypedata[MAXSIZE];intfront,rear;JSequeue;/*栈结构*/typedefstruct{DataTypedata(MAXSIZE);inttop;JSeqstack;/*入队*/Sequeue*Enqueue(Sequeue*sq,intn){intx,i=l;printf(”请输入队列中的元素:t");while(i<=n){scanf(”%d”,&x);sq->rear=(sq->rear+l)%MAXSIZE;sq->data[sq->rear]=x;i++;}re
7、turnsq;}/*显示元素*/voidDisplay(Sequeue*s,intn)/*显示时不要移动做出队处理*/{inti=l;intrecord=s->front;while(i<=n){record=(record+l)%MAXSIZE;printf("%4d"zs->data[record]);i++;}}厂収队列的头元素*/DataTypeFront(Sequeue*s){intx;x=s->data[(s->front+l)%MAXSIZE];s->front=(s->front+l)%MAXSIZE;returnx;}/*入栈:把队列内容入栈*
8、/Seqstack*Pu
此文档下载收益归作者所有