《栈的链式存储结构的表示和实现实验报告(22页).doc》由会员分享,可在线阅读,更多相关《栈的链式存储结构的表示和实现实验报告(22页).doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-栈的链式存储结构的表示和实现实验报告-第 19 页数 据 结 构 实 验 报 告 册班 级: 学 号: 姓 名: 实验题目: 栈的链式存储结构的表示和实现实验日期:实验要求:1.认真阅读和掌握本实验的相关知识。2.编写程序实现栈的链式存储方式。3.编写程序实现对栈空的判断以及栈的入栈和出栈操作、取栈顶元素。4.保存程序的运行结果,结合程序分析链式结构的特点。5.填写实验报告概要设计:(1)初始化链栈。 (2)将链栈置空。 (3)完成入栈和出栈操作,完成取栈顶元素操作。 (4)选择菜单上的0,退出该程序的运行,结束实验内容。初始化栈操作,将栈的栈顶指针置为空值,即设栈S和栈顶指针top,Sto
2、p=null。如果所建栈里有数据元素,要将其置空,同样也是将栈顶指针的值置为空值。入栈操作,向栈里插入数据元素。首先要为插入数据元素分配结点,将插入数据元素的值赋值给插入结点的数据域,其次修改栈顶指针的指向关系,即修改插入结点和栈顶指针的地址,最后修改栈顶指针。出栈操作,从栈里删除数据元素。首先要判断栈是否为空栈,如是空栈则操作失败。否则,进行出栈操作,修改删除结点和栈顶指针,最后释放删除结点。取栈顶元素。详细设计:/链栈类型定义typedef int ElemType;typedef struct stacknodeElemType data;stacknode *next;StackNod
3、e;typedef structstacknode *top;LinkStack;/入栈void pushLstack(LinkStack *s,ElemType x)StackNode *p;p=new StackNode;p-data=x;p-next=s-top;s-top=p;/出栈ElemType popstack(LinkStack *s)ElemType x;StackNode *p;p=s-top;if(s-top=0) printf(栈空,不能出栈!n);return 0;exit(0);x=p-data;printf(%dn,x);s-top=p-next;delete p
4、;return x;/取栈顶元素ElemType StackTop(LinkStack *s)ElemType x;if(s-top=0) printf(链栈空!n);return 0;elsex=s-top-data;printf(当前链栈的栈顶元素为%d,x);return 0;topXana1 anan-1a1 toptop1,入栈示意图 2,出栈示意图开始ElemType x;s-tope=0Printf(“栈空,不能出栈“)x=p-datas-top=p-next;delete p;return x;结束ElemType x;开始s-top=0Printf(“链栈为空X=s-top-
5、data;return o;return o结束3,出栈 4,取栈顶元素调试分析:在调试中出现以上错误,经过查找原程序发现scanf(%d,&cord);中少填写了地址符。在调试中出现了初始化以后,没有在主菜单中选择操作就直接运行入栈了,经过查找原程序发现在swich语句中少了break。测试结果:实验成绩:实验题目:实验日期:实验要求:概要设计:详细设计:调试分析:测试结果:实验成绩:实验题目:实验日期:实验要求:概要设计:详细设计:调试分析:测试结果:实验成绩:实验题目:实验日期:实验要求:概要设计:详细设计:调试分析:测试结果:实验成绩:实验题目:实验日期:实验要求:概要设计:详细设计:调试分析:测试结果:实验成绩: