数据结构栈的实验报告Word下载.docx

上传人:b****6 文档编号:19053619 上传时间:2023-01-03 格式:DOCX 页数:3 大小:17.78KB
下载 相关 举报
数据结构栈的实验报告Word下载.docx_第1页
第1页 / 共3页
数据结构栈的实验报告Word下载.docx_第2页
第2页 / 共3页
数据结构栈的实验报告Word下载.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构栈的实验报告Word下载.docx

《数据结构栈的实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构栈的实验报告Word下载.docx(3页珍藏版)》请在冰豆网上搜索。

数据结构栈的实验报告Word下载.docx

在运行是要注意当输入不同的数据时所得结果是否正确,应运行多次,分别检查在不同情况下结果是否正确。

实验内容:

编译以下题目的程序并调试运行。

1)、编写一个程序algo3-1.cpp,实现顺的各种基本运算,并在此基础上设计一程序并完成如下功能:

(1)初始化栈s;

(2)判断栈s是否非空;

序栈个主(3)依次进栈元素a,b,c,d,e;

(4)判断栈s是否非空;

(5)输出出栈序列;

(6)判断栈s是否非空;

(7)释放栈。

图3.1Proj3_1工程组成本工程Proj3_1的组成结构如图3.1所示。

本工程的模块结构如图3.2所示。

图中方框表示函数,方框中指出函数名,箭头方向表示函数间的调用关系。

图3.2Proj3_1工程的程序结构图其中包含如下函数:

InitStack(SqStack*s)//初始化栈SDestroyStack(SqStack*s)//销毁栈sStackEmpty(SqStack*s)//判断栈空Push(SqStack*s,ElemTypee)//进栈Pop(SqStack*s,ElemTypee)//出栈GetTop(SqStack*s,ElemTypee)//取栈顶元素对应的程序如下:

//文件名:

algo3-1.cpp#includestdio.h#includemalloc.h#defineMaxSize100typedefcharElemType;

typedefstruct{ElemTypedata[MaxSize];

inttop;

//栈顶指针}SqStack;

voidInitStack(SqStack*s)//初始化栈S{s=(SqStack*)malloc(sizeof(SqStack));

s-top=-1;

//栈顶指针置为-1}voidDestroyStack(SqStack*s)//销毁栈s{free(s);

}boolStackEmpty(SqStack*s)//判断栈空{return(s-top==-1);

}boolPush(SqStack*s,ElemTypee)//进栈{if(s-top==MaxSize-1)//栈满的情况,即栈上溢出returnfalse;

s-top++;

//栈顶指针增1s-data[s-top]=e;

//元素e放在栈顶指针处returntrue;

}boolPop(SqStack*s,ElemTypee)//出栈{if(s-top==-1)//栈为空的情况,即栈下溢出returnfalse;

e=s-data[s-top];

//取栈顶指针元素的元素s-top--;

//栈顶指针减1returntrue;

}boolGetTop(SqStack*s,ElemTypee)//取栈顶元素{if(s-top==-1)//栈为空的情况,即栈下溢出returnfalse;

//取栈顶指针元素的元素returntrue;

}设计exp3-1.cpp程序如下//文件名:

exp3-1.cpp#includestdio.h#includemalloc.h#defineMaxSize100typedefcharElemType;

externvoidInitStack(SqStack*externvoidDestroyStack(SqStack*externboolStackEmpty(SqStack*s);

externboolPush(SqStack*s,ElemTypee);

externboolPop(SqStack*s,ElemTypeexternboolGetTop(SqStack*s,ElemTypevoidmain(){ElemTypee;

SqStack*s;

printf(栈s的基本运算如下:

\nprintf(

(1)初始化栈s\nInitStack(s);

printf(

(2)栈为%s\n,(StackEmpty(s)?

空:

非空));

printf((3)依次进栈元素a,b,c,d,e\nPush(s,aPush(s,bPush(s,cPush(s,dPush(s,eprintf((4)栈为%s\n,(StackEmpty(s)?

printf((5)出栈序列:

while(!

StackEmpty(s)){Pop(s,e);

printf(%c,e);

}printf(\nprintf((6)栈为%s\n,(StackEmpty(s)?

printf((7)释放栈\nDestroyStack(s);

}运行结果如下:

2)、编写一个程序algo3-2.cpp,实现链栈的各种基本运算,并在此基础上设计一个主程序并完成如下功能:

(1)初始化链栈s;

(2)判断链栈s是否非空;

(3)依次进栈a,b,c,d,e;

(4)判断链栈s是否非空;

(5)输出链栈长度;

(6)输出从栈底到栈顶元素;

(7)输出出队序列;

(8)判断链栈s是否非空;

图3.3Proj3_2工程组成(9)释放队列。

本工程Proj3_2的组成结构如图3.3所示。

本工程的模块结构如图3.4所示。

图3.4Proj3_2工程的程序结构图其中包含如下函数:

InitStack(LiStack*s)//初始化栈sDestroyStack(LiStack*s)//销毁栈StackEmpty(LiStack*s)//判断栈是否为空Push(LiStack*s,ElemTypee)//进栈Pop(LiStack*s,ElemTypee)//出栈GetTop(LiStack*s,ElemTypee)//取栈顶元素对应的程序如下:

algo3-2.cpp#includestdio.h#includemalloc.htypedefcharElemType;

typedefstructlinknode{ElemTypedata;

//数据域篇二:

数据结构顺序栈实验报告一、设计人员相关信息1.设计者姓名、学号和班号:

12地信李晓婧120122429832.设计日期:

2014.3.上机环境:

VC++6.0二、程序设计相关信息1.实验题目:

编写一个程序,实现顺序栈(假设栈中元素类型为char)的各种基本运算,并在此基础上设计一个程序,完成如下功能:

(1)初始化栈

(2)判断栈是否为空(3)依次进栈元素a,b,c,d,e(4)判断栈是否为空(5)输出栈长度(6)输出从栈顶到栈底元素(7)输出出栈序列(8)判断栈是否为空(9)释放栈2.实验项目组成:

栈的初始化、销毁、判断是否为空、进栈、出栈、取栈顶元素。

3.实验项目的程序结构(程序中的函数调用关系图):

4.实验项目包含的各个文件中的函数的功能描述:

(1)初始化栈InitStack:

建立一个新的空栈,实际上将栈顶指针指向-1即可。

(2)销毁栈DestroyStack:

释放栈占用的存储空间(3)判断栈是否为空StackEmpty:

栈为空的条件是s-op==-1。

(4)进栈Push:

在栈不满的条件下,先将栈顶指针增1,然后在栈顶指针指向位置插入元素e。

(5)出栈Pop:

在栈不为空的条件下,先将栈顶元素赋给e,然后将栈顶指针减1.(6)取栈顶元素GetTop:

在栈不为空的条件下,将栈顶元素赋给e。

5.算法描述或流程图:

#includestdio.h#includemalloc.h#includestdlib.h#defineMaxSize50typedefcharElemType;

typedefstruct{ElemTypedata[MaxSize];

/*栈顶指针*/}SqStack;

//定义顺序栈类型voidInitStack(SqStack*s)/*初始化*/{s=(SqStack*)malloc(sizeof(SqStack));

//栈顶指针置为-1}voidDestroyStack(SqStack*s)/*销毁*/{free(s);

}intStackEmpty(SqStack*s)/*判断是否为空*/{return(s-top==-1);

}intpush(SqStack*s,ElemTypea[],intn){inti;

if(s-top==MaxSize-1)//栈满的情况,即栈上溢出return0;

for(i=0;

ii++){s-top++;

//栈顶指针增1s-data[s-top]=a[i];

//元素e放在栈顶指针处}intPop(SqStack*s,ElemTypee)/*出栈一个元素*/{if(s-top==-1)//栈为空的情况,即栈下溢出return0;

//取栈顶元素s-top--;

//栈顶指针减1return1;

}}return1;

intGetTop(SqStack*s,ElemTypee)/*取栈顶元素*/{if(s-top==-1)//栈为空的情况,即栈下溢出return0;

//取栈顶元素return1;

}intStackLength(SqStack*s)/*求栈长度*/{return(s-top+1);

}voidDispStack(SqStack*s){}voidmain(){inti,j;

ElemTypestr[5]={a,b,c,d,e//定义字符数组SqStack*st;

//定义栈InitStack(st);

/*初始化*/i=StackEmpty(st);

//判断栈是否为空if(i==0)inti;

for(i=s-ii--)printf(%c,s-data[i]);

printf(\nprintf(顺序栈非空\nelseprintf(顺序栈为空\npush(st,str,5);

//进栈j=StackEmpty(st);

if(j==0)printf(顺序栈非空\nelseprintf(顺序栈为空\nprintf(栈长度为:

%d\n,StackLength(st));

//输出栈长度printf(出栈序列:

\nDispStack(st);

//输出栈StackEmpty(st);

DestroyStack(st);

}6.实验数据和实验结果:

篇三:

数据结构-实验报告顺序栈(封面)学生实验报告学院:

国际经贸学院课程名称:

数据结构专业班级:

09电子商务姓名:

学号:

学生实验报告(经管类专业用)一、实验目的及要求:

1、目的通过实验,实现顺序栈的各种基本运算。

2、内容及要求编写一个程序,实现顺序栈的各种基本运算,并在此基础上设计一个主程序完成下列功能:

(1)初始化栈S。

(2)判断栈S是否非空。

(3)依次进栈元素a,b,c,d,e。

(4)判断栈S是否非空。

(5)输出栈的长度。

(6)输出从栈顶到栈底的元素。

(7)输出出栈序列;

(8)判断链栈S是否为空;

(9)释放链栈二、仪器用具:

三、实验方法与步骤:

一、查阅顺序栈等相关资料,熟悉顺序栈基本概念和流程二、“开展”顺序栈实验流程三、整理实验数据和文档,总结实验的过程,编写实验报告四、实验结果与数据处理:

1、顺序栈的代码:

#includestdio.h#includemalloc.h#defineMaxSize100typedefcharElemType;

voidInitStack(SqStack*s){}voidClearStack(SqStack*s){}intStackLength(SqStack*s){s=(SqStack*)malloc(sizeof(SqStack));

free(s);

return(s-top+1);

intStackEmpty(SqStack*s){}intPush(SqStack*s,ElemTypee){}intPop(SqStack*s,ElemTypee){}intGetTop(SqStack*s,ElemTypee){}voidDispStack(SqStack*s)return(s-top==-1);

if(s-top==MaxSize-1)return0;

s-data[s-top]=e;

return1;

if(s-top==-1)return0;

s-top--;

inti;

for(i=s-ii--)printf(%c,s-data[i]);

printf(\nvoidmain(){//主函数SqStackS=(SqStack*)malloc(sizeof(SqStack));

printf(

(1)初始化顺序栈\nInitStack(S);

printf(

(2)判断顺序栈是否为空:

\nStackEmpty(S);

printf((3)依次进栈元素a,b,c,d,e:

\nPush(S,aPush(S,bPush(S,cPush(S,dPush(S,eprintf((4)判断顺序栈是否为空:

printf((5)输出栈长度:

%d\n,StackLength(S));

printf((6)输出从栈顶到栈底的元素:

\nStackTraverse(S);

printf((7)读出栈顶元素:

%d\n,GetTop(S,e));

printf((8)删除栈顶元素:

%d\n,Pop(S,e));

printf((9)输出从栈顶到栈底的元素:

printf((10)判断顺序栈是否为空\nStackEmpty(S);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1