网站大量收购闲置独家精品文档,联系QQ:2885784924

西南科技大学数据结构实验报告栈的基本操作.doc

西南科技大学数据结构实验报告栈的基本操作.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
西南科技大学数据结构实验报告栈的基本操作

西南科技大学数据结构实验报告 实验名称: 栈的基本操作 实验环境: windows 7 VS2010 实验类别: 指导教师: 专业班级: 姓 名: 学 号: 实验目的 掌握栈的链式存储结构 学会栈基本运算的实现 实验内容 我所做的实验是实验题3.2,编写程序3-2.cpp,实现链栈的各种基本运算,并在此基础上设计一个主程序完成如下功能 (1)、初始化链栈s; (2)、判断链栈s是否非空; (3) (4)、判断链栈s是否非空; (5)、输出链栈长度; (6)、输出从栈顶到栈底元素; (7)、输出出链栈序列; (8)、判断链栈s是否非空; (9)、释放链栈。 实验过程 本次实验我是用C++来完成的,链栈也就是采用单链表实现,链栈的优点是不存在栈满上溢的情况,规定栈的所有操作都是在单链表的表头进行的,所以实现链栈也就是对单链表的简化。下面具体介绍一下本次实验的实验过程: 初始化链栈要建立链栈的头结点,并将其next域置为NULL。 链栈为空的条件是栈的指针的下一个指向空(s-next==NULL) 进栈也就是将新数据结点插入到头结点之后。 链栈的长度也就是从第一个数据结点开始扫描单链表,从而保存访问的数据结点的个数,然后将其值返回。 从栈顶到栈底元素的输出也就是从第一个数据结点开始扫描单链表吗,并输出当前访问结点的数据域值 输出出栈序列是在栈不为空的条件下,将头结点的指针域所指数据结点的数据域输出,然后将其空间释放,也就是删除。 释放链栈也就是对栈的销毁,释放栈占用的全部存储空间 实验结果 本次实验实现了栈的各种基本运算,并对其进行检验,均没有发生错误,符合实验要求。 实验心得 通过本次实验,可以说我对单链表的操作再一次熟悉了一遍,并且了解到栈在实际应用当中也很广泛,例如在计算器当中的表达式的求值可以用栈来实现,DFS深度优先有哪些信誉好的足球投注网站也可以用栈来实现,从而解决了求解迷宫问题等等。通过学习栈,对大数据的处理也提供了遍历,提高了代码的可读性。 实验代码 #includeiostream using namespace std; struct stack //定义链栈数据类型为stack, { char data;//数据域 stack *next;//指针域 }; stack *init()//该函数实现初始化链栈 { stack *s; s=new stack;//依然用new函数开辟空间 s-next=NULL;//将其next域置为NULL return s; } int emptystack(stack *s)//该函数实现链栈的判空操作 { return (s-next==NULL);//这里返回1为非空,0为空 } void push(stack *s,char ch)//该函数实现了进栈的功能 { int i,q; stack *p; //首先要建立一个结点 p=new stack;//为该结点开辟空间 p-data=ch;//该结点的数据域为将进栈的元素 p-next=s-next;//将p结点的下一个结点指向s结点的下一个结点,为了实现插入操作的对接 s-next=p;//将s的下一个结点指向p,这样就把p指向的数据插入到了s的后面 } int lengthstack(stack *s)//该函数实现了计算链栈的长度 { stack *p=s-next;//因为链栈s有头结点,所以定义p指向s的下一个,因为s的下一个才有数据 int n=0; while(p!=NULL)//通过栈中元素指针指向地址遍历实现计算链栈长度功能 { n++;//n的累加,返回链栈长度 p=p-next; } return n; } void putstack(stack *s)//该函数实现了从栈顶到栈底元素的输出,其过程与计算链栈长度相似,只不过这次是把数据域中元素的输出 { stack *p=s-next; while(p!=NULL) { coutp-data; p=

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档