1、实验题目: 栈的链式存储结构的表示和实现实验日期:实验要求:1.认真阅读和掌握本实验的相关知识。2.编写程序实现栈的链式存储方式。3.编写程序实现对栈空的判断以及栈的入栈和出栈操作、取栈顶元素。4.保存程序的运行结果,结合程序分析链式结构的特点。5.填写实验报告概要设计:(1)初始化链栈。 (2)将链栈置空。 (3)完成入栈和出栈操作,完成取栈顶元素操作。 (4)选择菜单上的0,退出该程序的运行,结束实验内容。初始化栈操作,将栈的栈顶指针置为空值,即设栈S和栈顶指针top,Stop=null。如果所建栈里有数据元素,要将其置空,同样也是将栈顶指针的值置为空值。入栈操作,向栈里插入数据元素。首先
2、要为插入数据元素分配结点,将插入数据元素的值赋值给插入结点的数据域,其次修改栈顶指针的指向关系,即修改插入结点和栈顶指针的地址,最后修改栈顶指针。出栈操作,从栈里删除数据元素。首先要判断栈是否为空栈,如是空栈则操作失败。否则,进行出栈操作,修改删除结点和栈顶指针,最后释放删除结点。取栈顶元素。详细设计:/链栈类型定义typedef int ElemType;typedef struct stacknode ElemType data; stacknode *next;StackNode;typedef struct stacknode *top;LinkStack;/入栈void pushLs
3、tack(LinkStack *s,ElemType x) StackNode *p; p=new StackNode; p-data=x;next=s-top; s-top=p;/出栈ElemType popstack(LinkStack *s) ElemType x; p=s- if(s-top=0) printf(栈空,不能出栈!n); return 0; exit(0); x=p-data;%dn,x);top=p-next;delete p; return x;/取栈顶元素ElemType StackTop(LinkStack *s) printf(链栈空! else x=s-top-当前链栈的栈顶元素为%d top top top1,入栈示意图 2,出栈示意图3,出栈 4,取栈顶元素调试分析:在调试中出现以上错误,经过查找原程序发现scanf(%d,&cord);中少填写了地址符。在调试中出现了初始化以后,没有在主菜单中选择操作就直接运行入栈了,经过查找原程序发现在swich语句中少了break。测试结果:实验成绩: