数据结构实验03-栈

数据结构实验03-栈

ID:44197303

大小:191.81 KB

页数:8页

时间:2019-10-19

数据结构实验03-栈_第1页
数据结构实验03-栈_第2页
数据结构实验03-栈_第3页
数据结构实验03-栈_第4页
数据结构实验03-栈_第5页
资源描述:

《数据结构实验03-栈》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、《数据结构与算法》实验报告班级学号姓名实验周次实验日期实验03:栈一、实验目的1.掌握链式栈和顺序栈的特点;2.学握链式栈和顺序栈基本结构的定义及其基本运算;3.掌握链式栈和顺序栈的创建和初始化、进栈、出栈、读取栈顶元素和显示栈中所冇元素等基本操作。二、实验内容假设一个班冇N个学生(N〈20),每个学生冇学号、姓名、性別、分数共4个成员。各个学生Z间的逻辑关系是线性的,请采用链式栈和顺序栈作为存储结构编写程序。程序所要实现的功能如下:①输入一个学生并进栈;②出栈一个学生并输出;③读取栈顶元索并输出;④输出栈中所冇学生的相关信

2、息。顺序栈程序的主菜单如图3-1所示,链式栈的功能界面与其类似。三、实验要求1、学号为双号的同学:釆川链式栈作为存储结构,补全程序LinkedStack-NoHcad.cpp之中的代码;学号为单号的同学:采用顺序栈作为存储结构,补全SeqStack-Dynamic.cpp屮的代码。2、程序的界面及详细功能分别参见演示程序LinkedStackDcmo.cxc和ScqStackDcmo.exe<>3、实验报告电子稿和打印稿及其它提交方面的要求同实验01。四.运行结果(截图)*2出桟二个学生*3*4*0giiir"C:Wind

3、owssystem32Debugryj5.exeR□回却n请选择菜单项:4嶄有芈生的信息如下(从栈顶到栈底)?说明SS栈底学号姓名性别成绩456xiaowangm50.0345xiaohuaVJ90.0234liliw70.0123xiaoningm80.0rrr图3-1显示栈中所有元素—个学生数据并退岀禾王序输入待礎辭;请PleasePleasePleasePleaseinputinputinputinputthethethethenum:name:sex:score:567■■■■J1J1men60nr图3-2进栈

4、一个元素当前岀栈龜蘿辦567jijim60.0图3-3出栈一个元素五、实验程序(源代码)#includez,stdio.h"#includez,stdlib.h"#include,zstring・h〃//学生结构体typedefstructiicharno[10];charname[20];chargender;floatscore;}STU;//链式栈结点的结构体typedefstructLNode{//当前结点中存储的学生数据//下一个结点的地址//栈顶指针(相当于无头结点单链表的头指针)STUdata;structLN

5、ode*next;}StackNode;//链式栈的结构体typedefstruct{StackNode*top;}LinkedStack;//功能菜单voidmenu(){printf(,zt*1进栈一个学生*『);printf(,zt*2出栈-个学生*〃);printf(〃t*3读取栈顶元素并输出*〃);printf("t*4输出所有学生信息*〃);printf("t*0保存数据并退出程序*〃);printf(〃t***************链栈*****************、□〃

6、);printf(z/t请选择菜单项:zz);/*检测当前冃录下是否存在文件stu.dat,如果存在,则从其中读取数据构造链式栈;否则,新建该数据文件。*/voidinit(LinkcdStack&LS)FILE*fp;charflag=,;STUstmp;StackNode*p,*rear;//先设iK链式栈的top指针为空,表示链式栈为空LS.top=NULL;//打开文件if((fp=fopen(,zstu.dat〃,"rb"))二二NULL)flog二,w';if((fp=fopen("stu.dat〃,"wb")

7、)==NULL){printff数据文件不存在或创建文件不成功,程序异常退岀!『);exit(-1);〃开始读文件if(flag==r){fread(&stmp,sizeof(STU),1,fp);while(!feof(fp)){//开辟一个结点空间p=(StackNode*)ma11oc(sizeof(StackNode));//构造结点p->data=stmp;p->next=NULL;//为了保证恢复出来的链表结点顺序和当初存入的结点顺序保持一致//将构造好的结点从尾部插入单向链表if(NULL==LS.top)/

8、/如果插入的是第一个结点rear=p;LS.top=p;}//如果插入的不是第一个结点else{rear->next=p;rear=p;}//再读一个学生的数据fread(&stmp,sizeof(STU),1,fp);}}//关闭文件fclose(fp);}/*输入一个学生的信息*/ST

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

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

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