- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
上机实验报告
学 院: 计算机与信息技术学院
专 业: 计算机科学与技术(师范)
课程名称: 数据结构
实验题目: 顺序栈的基本操作
班级序号: 师范1班
学 号: 201421012731
学生姓名: 邓雪
指导教师: 杨红颖
完成时间: 2015年12月25号
实验目的:
1.熟悉掌握栈的定义、结构及性质;?
2.能够实现创建一个顺序栈,熟练实现入栈、出栈等栈的基本操作;?
3.了解和掌握栈的应用。
实验环境:
Microsoft Visual c++ 6.0
实验内容及要求:
栈是一种特殊的线性表,逻辑结构和线性表相同,只是其运算规则有更多的限制,故又称为受限的线性表。
建立顺序栈,实现如下功能:
1.建立一个顺序栈
2.输出栈
3.进栈
4.退栈
5.取栈顶元素
6.清空栈
7.判断栈是否为空
进行栈的基本操作时要注意栈后进先出的特性。
四、概要设计:
1、通过循环,由键盘输入一串数据。创建并初始化一个顺序栈。
2、编写实现相关功能函数,完成子函数模块如下。
调用子函数,实现菜单调用功能,完成顺序表的相关操作
五、代码:
#includestdio.h
#includestdlib.h
#define maxsize 64
typedef int datatype;
//定义结构体
typedef struct
{
datatype data[maxsize];
int top;
}seqstack;
//建立顺序栈
seqstack *SET(seqstack *s)
{
int i;
s=(seqstack*)malloc(sizeof(seqstack));
s-top=-1;
printf(请输入顺序栈元素(整型,以0结束):);
scanf(%d,i);
do{
s-top++;
s-data[s-top]=i;
scanf(%d,i);
}while(i!=0);
printf(顺序栈建立成功\n);
return s;
}
//清空栈
void SETNULL(seqstack *s)
{
s-top=-1;}
//判断栈空
int EMPTY(seqstack *s)
{
if(s-top=0)
return 0;
else return 1;}
//进栈
seqstack *PUSH(seqstack *s)
{
int x;
printf(你想要插入的数字:);
scanf(%d,x);
if(s-top==maxsize-1)
{
printf(overflow);
return NULL;
}
else
{
s-top++;
s-data[s-top]=x;
}
return s;
}
//退栈
seqstack *POP(seqstack *s)
{
if(s-top0)
{
printf(underlow);
return s;
}
else
{
s-top--;
printf(删除的栈顶元素是:);
printf(%d\n,(s-data[s-top+1]));
}
return s;
}
//取栈顶
void TOP(seqstack *s)
{
if(s-top0)
{
printf(stack is empty);
}
else
{
printf(当前的栈顶元素是:);
printf(%d\n,(s-data[s-top]));
}
}
//输出栈
void print(seqstack *s)
{
int i;
if(s-top0)
{
printf(清空栈成功!);
}
for(i=s-top;i=0;i--)
printf(%d ,s-data[i]);
}
//主函数
int main()
{
seqstack *s;
int i,j;
printf(\n\n\t\t\t\t欢迎使用\n);
printf(\t\t___________________________________________\n);
printf(\t\t\t1.建立一个顺序栈\n);
printf(\t\t\t2.输出栈\n);
printf(\t\t\t3.进栈\n);
printf(\t\t\t4.退栈\n);
printf(\t\t\t5.取栈顶元素\n);
printf(\t\t\t6.清空栈\n);
printf(\t\t\t7.判断栈是否为空\n);
pr
文档评论(0)