预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共20页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数据结构实验报告册班级:学号:姓名:实验题目:栈的链式存储结构的表示和实现实验日期:实验要求:1.认真阅读和掌握本实验的相关知识。2.编写程序实现栈的链式存储方式。3.编写程序实现对栈空的判断以与栈的入栈和出栈操作、取栈顶元素。4.保存程序的运行结果结合程序分析链式结构的特点。5.填写实验报告概要设计:(1)初始化链栈。(2)将链栈置空。(3)完成入栈和出栈操作完成取栈顶元素操作。(4)选择菜单上的0退出该程序的运行完毕实验容。初始化栈操作将栈的栈顶指针置为空值即设栈S和栈顶指针topS→top=null。如果所建栈里有数据元素要将其置空同样也是将栈顶指针的值置为空值。入栈操作向栈里插入数据元素。首先要为插入数据元素分配结点将插入数据元素的值赋值给插入结点的数据域其次修改栈顶指针的指向关系即修改插入结点和栈顶指针的地址最后修改栈顶指针。出栈操作从栈里删除数据元素。首先要判断栈是否为空栈如是空栈那么操作失败。否那么进展出栈操作修改删除结点和栈顶指针最后释放删除结点。取栈顶元素。1/20详细设计://链栈类型定义typedefintElemType;typedefstructstacknode{ElemTypedata;stacknode*next;}StackNode;typedefstruct{stacknode*top;}LinkStack;//入栈voidpushLstack(LinkStack*sElemTypex){StackNode*p;p=newStackNode;p->data=x;p->next=s->top;s->top=p;}//出栈ElemTypepopstack(LinkStack*s){ElemTypex;StackNode*p;p=s->top;if(s->top==0){printf("栈空不能出栈!!\n");return0;exit(0);}x=p->data;printf("%d\n"x);s->top=p->next;deletep;returnx;}//取栈顶元素ElemTypeStackTop(LinkStack*s){ElemTypex;if(s->top==0){3/20printf("链栈空!!\n");return0;}else{x=s->top->data;printf("当前链栈的栈顶元素为%d"x);return0;}}topXana1^anan-1a1toptop1入栈示意图2出栈示意图开始开始ElemTypex;ElemTypex;s->top==0s->tope==0Printf(“链栈为X=s->top->data;空Printf(“栈空不能出栈“)returno;returnox=p->datas->top=p->next;delete完毕p;returnx;完毕3出栈