《数据结构》实验报告
院系 应用科技学院 专业 电子信息
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
姓名 学号
10 级 电信 班 2011 年 11 月 05日
1.实验目的
1、 熟悉栈的定义和栈的基本操作。
2、 掌握顺序存储栈和链接存储栈的基本运算。
3、 加深对栈结构的理解,逐步培养解决实际能力问题的能力
2.需求分析
1、 栈的建立
输入形式和输入值的范围:输入若干个正整数,用空格隔开,以0结束。
2、 菜单操作
根据提示进行操作。
3.概要
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
(1)为了实现上述程序功能,需要第一一个简化的链表抽象数据类型:
ADT LinkList {
数据对象:D={ai|ai∈IntegerSet,i=0,1,2,…,n,n≥0}
数据关系:R1={
|ai-1,ai1∈D,i=2,……,n}
基本操作:
①进栈函数 int Push(SqStack *S, int e)
②出栈函数 int Pop(SqStack *S,int *e)
③输出栈元素 void OutputStack(SqStack *S)
④输出栈中的所有元素。
4.详细设计
采用链表实现概要设计中的定义的抽象数据类型,有关数据数据类型和伪码算法定义如下:
(1)类型定义
typedef struct {
int *base;
int *top;
int stacksize;
} SqStack
(2)基本操作的伪码算法
/****************构造一个空栈****************/
int InitStack(SqStack &S)
{
S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!S.base) return 0;
S.top=S.base;
S.stacksize=STACK_INIT_SIZE ;
return 1;
}
int GetTop(SqStack S,int &e)
{
if(S.top==S.base) return 0;
e=*(S.top-1);
return 1;
}
/****************入栈函数****************/
int Push(SqStack &S,int e)
{ //插入元素e为新的栈顶元素
if(S.top-S.base>=S.stacksize)
{
S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));
if(!S.base) return 0;
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return 1;
}
/****************出栈函数****************/
int Pop(SqStack &S,int &e)
{
if(S.top==S.base) return 0;
e=*--S.top;
return 1;
}
/****************输出函数****************/
int OutputStack(SqStack &S)
{ //输出栈中所有元素
int *p;
int i;
p=S.top-1;
printf("栈中的元素有:");
for(i=0;i
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
。
6.测试结果
7. 附录
#include
#include
#include
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct{
int *base;
int *top;
int stacksize;
}SqStack;
/****************构造一个空栈****************/
int InitStack(SqStack &S)
{
S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!S.base) return 0;
S.top=S.base;
S.stacksize=STACK_INIT_SIZE ;
return 1;
}
int GetTop(SqStack S,int &e)
{
if(S.top==S.base) return 0;
e=*(S.top-1);
return 1;
}
/****************入栈函数****************/
int Push(SqStack &S,int e)
{ //插入元素e为新的栈顶元素
if(S.top-S.base>=S.stacksize)
{
S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));
if(!S.base) return 0;
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return 1;
}
/****************出栈函数****************/
int Pop(SqStack &S,int &e)
{
if(S.top==S.base) return 0;
e=*--S.top;
return 1;
}
/****************输出函数****************/
int OutputStack(SqStack &S)
{ //输出栈中所有元素
int *p;
int i;
p=S.top-1;
printf("栈中的元素有:");
for(i=0;i
本文档为【数据结构出栈、入栈实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。