栈的链式存储结构的表示和实现实验报告.docx
- 文档编号:931085
- 上传时间:2022-10-14
- 格式:DOCX
- 页数:10
- 大小:103.17KB
栈的链式存储结构的表示和实现实验报告.docx
《栈的链式存储结构的表示和实现实验报告.docx》由会员分享,可在线阅读,更多相关《栈的链式存储结构的表示和实现实验报告.docx(10页珍藏版)》请在冰豆网上搜索。
栈的链式存储结构的表示和实现实验报告
数据结构实验报告册
班级:
学号:
姓名:
实验题目:
栈的链式存储结构的表示和实现
实验日期:
实验要求:
1.认真阅读和掌握本实验的相关知识。
2.编写程序实现栈的链式存储方式。
3.编写程序实现对栈空的判断以及栈的入栈和出栈操作、取栈顶元素。
4.保存程序的运行结果,结合程序分析链式结构的特点。
5.填写实验报告
概要设计:
(1)初始化链栈。
(2)将链栈置空。
(3)完成入栈和出栈操作,完成取栈顶元素操作。
(4)选择菜单上的0,退出该程序的运行,结束实验内容。
初始化栈操作,将栈的栈顶指针置为空值,即设栈S和栈顶指针top,S→top=null。
如果所建栈里有数据元素,要将其置空,同样也是将栈顶指针的值置为空值。
入栈操作,向栈里插入数据元素。
首先要为插入数据元素分配结点,将插入数据元素的值赋值给插入结点的数据域,其次修改栈顶指针的指向关系,即修改插入结点和栈顶指针的地址,最后修改栈顶指针。
出栈操作,从栈里删除数据元素。
首先要判断栈是否为空栈,如是空栈则操作失败。
否则,进行出栈操作,修改删除结点和栈顶指针,最后释放删除结点。
取栈顶元素。
详细设计:
//链栈类型定义
typedefintElemType;
typedefstructstacknode
{
ElemTypedata;
stacknode*next;
}StackNode;
typedefstruct
{
stacknode*top;
}LinkStack;
//入栈
voidpushLstack(LinkStack*s,ElemTypex)
{
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)
{
printf("链栈空!
!
\n");
return0;
}
else
{
x=s->top->data;
printf("当前链栈的栈顶元素为%d",x);
return0;
}
}top
toptop
1,入栈示意图2,出栈示意图
3,出栈4,取栈顶元素
调试分析:
在调试中出现以上错误,经过查找原程序发现scanf("%d",&cord);中少填写了地址符。
在调试中出现了初始化以后,没有在主菜单中选择操作就直接运行入栈了,经过查找原程序发现在swich语句中少了break。
测试结果:
实验成绩:
实验题目:
实验日期:
实验要求:
概要设计:
详细设计:
调试分析:
测试结果:
实验成绩:
实验题目:
实验日期:
实验要求:
概要设计:
详细设计:
调试分析:
测试结果:
实验成绩:
实验题目:
实验日期:
实验要求:
概要设计:
详细设计:
调试分析:
测试结果:
实验成绩:
实验题目:
实验日期:
实验要求:
概要设计:
详细设计:
调试分析:
测试结果:
实验成绩:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 链式 存储 结构 表示 实现 实验 报告