ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:75.17KB ,
资源ID:20622311      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20622311.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(大数据的结构栈和队列实验报告材料Word文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

大数据的结构栈和队列实验报告材料Word文档格式.docx

1、(6)判断栈s是否非空; (7)释放栈。 图3.1 Proj3_1 工程组成本工程Proj3_1的组成结构如图3.1所示。本工程的模块结构如图3.2所示。图中方框表示函数,方框中指出函数名,箭头方向表示函数间的调用关系。图3.2 Proj3_1工程的程序结构图其中包含如下函数:InitStack(SqStack *&s) /初始化栈SDestroyStack(SqStack *&s) /销毁栈sStackEmpty(SqStack *s) /判断栈空Push(SqStack *&s,ElemType e) /进栈Pop(SqStack *&s,ElemType &e) /出栈GetTop(Sq

2、Stack *s,ElemType &e) /取栈顶元素 对应的程序如下:/文件名:algo3-1.cpp#include malloc.h#define MaxSize 100typedef char ElemType;typedef struct ElemType dataMaxSize; int top; /栈顶指针 SqStack;void InitStack(SqStack *& s=(SqStack *)malloc(sizeof(SqStack); s-top=-1; /栈顶指针置为-1void DestroyStack(SqStack *& free(s);bool Stack

3、Empty(SqStack *s) /判断栈空 return(s-top=-1);bool Push(SqStack *& if (s-top=MaxSize-1) /栈满的情况,即栈上溢出 return false;top+; /栈顶指针增1datas-top=e; /元素e放在栈顶指针处 return true;bool Pop(SqStack *&top=-1) /栈为空的情况,即栈下溢出 e=s-top; /取栈顶指针元素的元素top-; /栈顶指针减1 bool GetTop(SqStack *s,ElemType &设计exp3-1.cpp程序如下exp3-1.cpp /栈顶指针e

4、xtern void InitStack(SqStack *&s);extern void DestroyStack(SqStack *&extern bool StackEmpty(SqStack *s);extern bool Push(SqStack *&s,ElemType e);extern bool Pop(SqStack *&e);extern bool GetTop(SqStack *s,ElemType &void main() ElemType e; SqStack *s; printf(栈s的基本运算如下:n); (1)初始化栈sn InitStack(s); (2)栈为

5、%sn,(StackEmpty(s)?空:非空); (3)依次进栈元素a,b,c,d,en Push(s,abcde (4)栈为%sn (5)出栈序列: while (!StackEmpty(s) Pop(s,e); printf(%c ,e); (6)栈为%sn (7)释放栈n DestroyStack(s);运行结果如下:2)、编写一个程序algo3-2.cpp,实现链栈的各种基本运算,并在此基础上设计一个主程序并完成如下功能:(1)初始化链栈s;(2)判断链栈s是否非空;(3)依次进栈a,b,c,d,e;(4)判断链栈s是否非空;(5)输出链栈长度;(6)输出从栈底到栈顶元素;(7)输出

6、出队序列;(8)判断链栈s是否非空; 图3.3 Proj3_2工程组成(9)释放队列。本工程Proj3_2的组成结构如图3.3所示。本工程的模块结构如图3.4所示。 图3.4 Proj3_2工程的程序结构图InitStack(LiStack *&s) /初始化栈s DestroyStack(LiStack *&s) /销毁栈StackEmpty(LiStack *s) /判断栈是否为空Push(LiStack *&Pop(LiStack *&GetTop(LiStack *s,ElemType &e) /取栈顶元素对应的程序如下:algo3-2.cpptypedef struct linkno

7、de ElemType data; /数据域 struct linknode *next; /指针域 LiStack;void InitStack(LiStack *&s) /初始化栈s s=(LiStack *)malloc(sizeof(LiStack);next=NULL;void DestroyStack(LiStack *& LiStack *p=s,*q=s-next; while (q!=NULL) free(p); p=q; q=p- free(p); /此时p指向尾节点,释放其空间bool StackEmpty(LiStack *s) /判断栈是否为空next=NULL);v

8、oid Push(LiStack *& LiStack *p; p=(LiStack *)malloc(sizeof(LiStack); p-data=e; /新建元素e对应的节点*pnext=s- /插入*p节点作为开始节点next=p;bool Pop(LiStack *& if (s-next=NULL) /栈空的情况 p=s- /p指向开始节点 e=p-data;next=p- /删除*p节点 /释放*p节点bool GetTop(LiStack *s,ElemType &next-设计 exp3-2.cpp 主程序exp3-2.cppextern void InitStack(LiS

9、tack *&extern void DestroyStack(LiStack *&extern bool StackEmpty(LiStack *s);extern void Push(LiStack *&extern bool Pop(LiStack *&extern bool GetTop(LiStack *s,ElemType & LiStack *s;程序运行结果如下:3)、编写一个程序algo3-3.cpp,实现顺序环形队列的各种基本运算,并在此基础上设计一个主程序并完成如下功能:(1)初始化队列q;(2)判断队列q是否非空;(3)依次进队列a,b,c;(4)出队一个元素,输出该元

10、素;(5)输出队列q的元素个数;(6)依次进队列元素d,e,f; 图3-5 Proj3_3的工程组成(7)输出队列q的元素个数;(8)输出出队序列;本工程Proj3_3的组成结构如图3.5所示。本工程的模块结构如图3.6所示。图3.6 Proj3_3工程的程序结构图InitQueue(SqQueue *&q) /初始化队列DestroyQueue(SqQueue *&q) /销毁队列QueueEmpty(SqQueue *q) /判断队列空enQueue(SqQueue *&q,ElemType e) /进队deQueue(SqQueue *&q,ElemType &e) /出队algo3-3

11、.cpp#define MaxSize 5 int front,rear; /队首和队尾指针 SqQueue;void InitQueue(SqQueue *& q=(SqQueue *)malloc (sizeof(SqQueue); q-front=q-rear=0;void DestroyQueue(SqQueue *& free(q);bool QueueEmpty(SqQueue *q) /判断队列空 return(q-front=q-rear);bool enQueue(SqQueue *& if (q-rear+1)%MaxSize=q-front) /队满上溢出rear=(q-

12、rear+1)%MaxSize;dataq-rear=e;bool deQueue(SqQueue *& if (q-rear) /队空下溢出front=(q-front+1)%MaxSize; e=q-front;设计 exp3-3.cpp 主程序 ElemType elemMaxSize;extern void InitQueue(SqQueue *&q);extern void DestroyQueue(SqQueue *&extern bool QueueEmpty(SqQueue *q);extern bool enQueue(SqQueue *&q,ElemType e);exte

13、rn bool deQueue(SqQueue *& SqQueue *q;环形队列基本运算如下: (1)初始化队列qn InitQueue(q); (2)依次进队列元素a,b,cn if (!enQueue(q,) printf(t提示:队满,不能进队n (3)队列为%sn,(QueueEmpty(q)? if (deQueue(q,e)=0) 队空,不能出队n else (4)出队一个元素%cn (5)依次进队列元素d,e,fnf (6)出队列序列:QueueEmpty(q) deQueue(q,e); (7)释放队列n DestroyQueue(q); 四、总结从数据结构的定义看,栈和队列也是一种线性表。其与线性表的不同之处在于栈和队列的相关运算具有特殊性,只是线性表相关运算的一个子集。一般线性表的上的插入、删除运算不受限制,而栈和队列上的插入、删除运算受某种特殊限制。因此。栈和队列也称为操作受限的线性表。

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

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