- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验报告_实验二_ - 实验报告 - 书业网
实验报告_实验二_ - 实验报告 - 书业网
数据结构与算法实现实验报告
一、 实验一
1.实验题目
顺序栈的定义及其操作算法的实现
2.需求分析
本演示程序用C++编写,编程实现顺序栈表的类型定义及顺序表的初始化操作、入栈操作、出栈操作、取栈顶元素操作、输出操作等,并对其进行验证。
输出的形式:输出栈中的每一个元素。
程序所能达到的功能:实现顺序栈表的类型定义及顺序表的初始化操作、入栈操作、出栈操作、取栈顶元素操作、输出操作。
测试数据:
往顺序栈中插入7,14,21,28,35,42
3.概要设计
1)为了实现上述程序功能,需要定义栈的抽象数据类型:
ADT Stack {
数据对象:D={ai|aiElemSet,i=1,2,…,n,n≥0}
数据关系:R={lt;ai-1,aigt;|ai,ai-1D,i=2,…,n}
基本操作:
InitStack(SqStack amp;S)
操作结果:构造一个空栈S.
GetTop(SqStack S, ElemType amp;e)
初始条件:顺序栈S已存在
操作结果:得到顺序栈的头元素
Push(SqStack amp;S, ElemType e)
初始条件:顺序栈S已存在
操作结果:往顺序栈S中插入元素e为新的栈顶元素
Pop(SqStack amp;S,ElemType amp;e)
初始条件:顺序栈S已存在
操作结果:从顺序栈S删除栈顶元素.
StackOutput(SqStack S)
初始条件:顺序栈S已存在
操作结果:读取顺序栈中的各个元素
main()
操作结果:调用各个函数
4.详细设计
1) 结点类型和指针类型
typedef struct
{ElemType *Elem;
int Top;
int StackSize;
}SqStack;
2) 顺序栈的基本操作
void InitStack(SqStack amp;S)//构造一个空栈S
{ S.Elem=(ElemType *)malloc(Init_Size*sizeof(ElemType));
if(!S.Elem) coutlt;lt;quot;OVERFLOWquot;; //存储分配失败
S.Top=0;
} //InitStack
void GetTop(SqStack S, ElemType amp;e)//若栈不空,则用e返回S的栈顶元素,否则返回ERROR
{if (S.Top==0) coutlt;lt;quot;ERRORquot;;
e=S.Elem[S.Top-1];
} //GetTop
void Push(SqStack amp;S, ElemType e)//插入元素e为新的栈顶元素
{ if(S.Top==S.StackSize) //栈满,追加存储空间
{ S.Elem=(ElemType*)malloc((S.StackSize+INCR)*sizeof(ElemType));
if(!S.Elem) coutlt;lt;quot;OVERFLOWquot;; //存储空间分配失败
S.StackSize+=INCR;
}
S.Elem[S.Top++]=e;
} //Push
void Pop(SqStack amp;S,ElemType amp;e) //若栈不空,则删除S的栈顶元素,用e返回其值,否则返回ERROR
{if (!S.Top)
{coutlt;lt;quot;栈为空quot;lt;lt;endl;coutlt;lt;quot;ERRORquot;;}
e=S.Elem[--S.Top];
}//Pop
void StackOutput(SqStack S) //输出栈中的元素
{ int i;
for(i=0;ilt;S.Top;i++)
coutlt;lt;S.Elem[i]lt;lt;quot; quot;;
coutlt;lt;endl;
} //StackOutput
3) 其他模块
int main() //主函数
{ SqStack S
文档评论(0)