欢迎来到天天文库
浏览记录
ID:22963558
大小:168.00 KB
页数:11页
时间:2018-11-02
《淮海工学院数据结构第2次实验》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、WORD文档下载可编辑淮海工学院计算机科学系实验报告书课程名:《数据结构》题目:线性数据结构实验(栈与对立队列及其应用)班级:学号:2012122693姓名:评语:成绩:指导教师:批阅时间:年月日专业资料整理分享WORD文档下载可编辑线性表算法实现与应用报告要求1目的与要求:1)掌握栈与队列的数据类型描述及特点;2)掌握栈的顺序和链式存储存表示与基本算法的实现;3)掌握队列的链式和循环存储表示与基本操作算法实现;4)掌握栈与队列在实际问题中的应用和基本编程技巧;5)按照实验题目要求,独立完成实际程序的编写编写、调试和运行,并通过用例数的运行过程抓获相关屏面验证程序设计的正确性;
2、7)由于国庆节占用授课时间,所以本次实验将不做统一上机安排,要求同学们节日期间自行完成实验任务,并于第6周周4以前按时提交实验报告。2实验内容或题目(一)必做题:1、实现顺序栈的创建(初始化)、压入(插入)、弹出(删除)操作(数据元素类型自己选取,如整型、字符型等),并给出栈的每次操作变化状态;2、实现链栈的创建(初始化)、压入(插入)、弹出(删除)操作(数据元素类型自己选取,如整型、字符型等),要求给出栈的操作变化过程;3、实现循环队列的创建、进队、出队等基本操作(数据元素类型自己选取,如整型、字符型等),并实时给出队列的操作变化状态;4、实现链式队列的创建、进队、出队等基本
3、操作(数据元素类型自己选取,如整型、字符型等),并实时给出队列的操作变化状态;(二)选做题(视自己能力而定,数量不限):任选一个或多个源程序(已经发给学委),并阅读、调试和运行程序,而后给出程序功能分析和实例运行演示;1、实现表达式求值算法程序;2、用递归算法实现汉诺塔问题算法程序;3、使用循环队列实现打印杨辉三角形算法程序。3实验步骤与源程序第一题:#include#include#defineTRUE1#defineFALSE0#defineSize50typedefstruct{intelem[Size];inttop;}SeqSta
4、ck;专业资料整理分享WORD文档下载可编辑voidInitStack(SeqStack*S){S->top=-1;}intIsEmpty(SeqStack*S){return(S->top==-1?TRUE:FALSE);//判断栈空为空是真反之为假}intIsFull(SeqStack*S){return(S->top==Size-1?TRUE:FALSE);//判断栈满为满是真反之为假}intPush(SeqStack*S,intx)//压栈{if(S->top==Size-1)return(FALSE);S->top++;S->elem[S->top]=x;return
5、(TRUE);}intPop(SeqStack*S,int*x)//弹出{if(S->top==-1)return(FALSE);else{*x=S->elem[S->top];S->top--;return(TRUE);}}voidmain(){SeqStackS;intx,y,i,l;专业资料整理分享WORD文档下载可编辑InitStack(&S);if(!IsFull(&S))printf("栈空:");printf("输入要压入的元素个数(50以内):");scanf("%d",&l);printf("输入要压入的元素:");for(i=0;i6、{scanf("%d",&y);Push(&S,y);}printf("弹出:");while(!IsEmpty(&S)){Pop(&S,&x);printf("%d",x);}}第二题:#defineTRUE1#defineFALSE0#include#includetypedefstructnode{intdata;structnode*next;}LinkStackNode;typedefLinkStackNode*LinkStack;intIsEmpty(LinkStackS){returnNULL==S->next?TRU7、E:FALSE;}intInitStack(LinkStack*S){*S=(node*)malloc(sizeof(node));if(NULL==*S)returnFALSE;(*S)->next=NULL;returnTRUE;}专业资料整理分享WORD文档下载可编辑intPush(LinkStackS,intx){LinkStackNode*temp;temp=(LinkStackNode*)malloc(sizeof(LinkStackNode));if(temp==NULL)re
6、{scanf("%d",&y);Push(&S,y);}printf("弹出:");while(!IsEmpty(&S)){Pop(&S,&x);printf("%d",x);}}第二题:#defineTRUE1#defineFALSE0#include#includetypedefstructnode{intdata;structnode*next;}LinkStackNode;typedefLinkStackNode*LinkStack;intIsEmpty(LinkStackS){returnNULL==S->next?TRU
7、E:FALSE;}intInitStack(LinkStack*S){*S=(node*)malloc(sizeof(node));if(NULL==*S)returnFALSE;(*S)->next=NULL;returnTRUE;}专业资料整理分享WORD文档下载可编辑intPush(LinkStackS,intx){LinkStackNode*temp;temp=(LinkStackNode*)malloc(sizeof(LinkStackNode));if(temp==NULL)re
此文档下载收益归作者所有