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

数据结构《第三章》例题与习题程序代码.pdf

数据结构《第三章》例题与习题程序代码.pdf

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

《数据结构》第3 章、栈和队列 《第三章、栈和队列》 例题以及部分习题的程序代码 3.1 栈的定义与基本操作的存储和实现 3.1.2 栈的顺序存储和基本操作的实现 1 顺序栈存储结构的定义 说明:由于栈的插入和删除操作仅在栈顶进行,不需要移动栈中的其它元素,所 以用顺序存储结构表示一个栈最为有利。 在C++语言中用以下结构类型来表示顺序栈。 #includeiostream.h //将C++中输入输出流库的头文件包含进来 typedef int SEType; //为了方便上机调试程序本章假定栈中的数据元素的类型SEType 为int类型数据 const int INITSIZE=100; //定义顺序栈存储空间的初始分配常量 const int SINC=10; //定义顺序栈存储空间的扩充常量 struct SqStack{ //定义顺序栈的结构类型为SqStack SEType *base; //栈中存储空间的基址 SEType *top; //栈顶指针 int stacksize; // 当前栈的存储容量(以元素为单位) int incsize; //每次增补容量的大小 }; 说明:判断一个顺序栈为空的条件是base==top, 即它们同时指向栈底。 2 顺序栈中基本操作的实现 (1)置空栈StackInit (S ) void StackInit_Sq(SqStack S,int ssize=INITSIZE,int incsize=SINC) { S.base=new SEType[ssize]; S.stacksize=ssize; S.top=S.base; S.incsize=incsize; } (2 )进栈Push(S,e) void IncSize(SqStack S) { S.stacksize+=S.incsize; //容量增加 SEType* a=new SEType[S.stacksize]; //分配空间 SEType *p=S.base,*q=a; while(pS.top)*q++=*p++; //将S.base 中的数据移到a 中 S.top=q; //设置栈顶指针 delete[]S.base; S.base=a; 1 / 15 2010 年10 月23 日 第3 章、例题与部分习题的程序代码 } void Push_Sq(SqStack S,SEType e) { if(S.top==S.base+S.stacksize) IncSize(S); *S.top++=e; } (3 )取栈顶元素GetElem(S,e) (5 )遍历Traverse (S ) int GetElem(SqStack S,SEType e) void TraverseStack_Sq(SqStack S) { if(S.base==S.top)return 0; { SEType* p=S.top; e=*(S.top-1); if(S.top==S.base) return 1; { cout 当前为空栈! } \n;return;} (4 )出栈

文档评论(0)

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

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

1亿VIP精品文档

相关文档