数据结构栈和队列实验报告Word格式文档下载.doc

上传人:b****1 文档编号:13181472 上传时间:2022-10-07 格式:DOC 页数:11 大小:99.85KB
下载 相关 举报
数据结构栈和队列实验报告Word格式文档下载.doc_第1页
第1页 / 共11页
数据结构栈和队列实验报告Word格式文档下载.doc_第2页
第2页 / 共11页
数据结构栈和队列实验报告Word格式文档下载.doc_第3页
第3页 / 共11页
数据结构栈和队列实验报告Word格式文档下载.doc_第4页
第4页 / 共11页
数据结构栈和队列实验报告Word格式文档下载.doc_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数据结构栈和队列实验报告Word格式文档下载.doc

《数据结构栈和队列实验报告Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《数据结构栈和队列实验报告Word格式文档下载.doc(11页珍藏版)》请在冰豆网上搜索。

数据结构栈和队列实验报告Word格式文档下载.doc

实验内容:

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

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所示。

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

main

InitStack

DestroyStack

StackEmpty

Push

Pop

GetTop

图3.2Proj3_1工程的程序结构图

其中包含如下函数:

InitStack(SqStack*&

s) //初始化栈S

DestroyStack(SqStack*&

s) //销毁栈s

StackEmpty(SqStack*s) //判断栈空

Push(SqStack*&

s,ElemTypee) //进栈

Pop(SqStack*&

s,ElemType&

e) //出栈

GetTop(SqStack*s,ElemType&

e) //取栈顶元素

对应的程序如下:

//文件名:

algo3-1.cpp

#include<

stdio.h>

malloc.h>

#defineMaxSize100

typedefcharElemType;

typedefstruct

{

ElemTypedata[MaxSize];

inttop;

//栈顶指针

}SqStack;

voidInitStack(SqStack*&

{ s=(SqStack*)malloc(sizeof(SqStack));

s->

top=-1;

//栈顶指针置为-1

}

voidDestroyStack(SqStack*&

free(s);

boolStackEmpty(SqStack*s) //判断栈空

return(s->

top==-1);

boolPush(SqStack*&

{ if(s->

top==MaxSize-1) //栈满的情况,即栈上溢出

returnfalse;

top++;

//栈顶指针增1

data[s->

top]=e;

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

returntrue;

boolPop(SqStack*&

top==-1) //栈为空的情况,即栈下溢出

e=s->

top];

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

top--;

//栈顶指针减1

}

boolGetTop(SqStack*s,ElemType&

设计exp3-1.cpp程序如下

//文件名:

exp3-1.cpp

//栈顶指针

externvoidInitStack(SqStack*&

s);

externvoidDestroyStack(SqStack*&

externboolStackEmpty(SqStack*s);

externboolPush(SqStack*&

s,ElemTypee);

externboolPop(SqStack*&

e);

externboolGetTop(SqStack*s,ElemType&

voidmain()

ElemTypee;

SqStack*s;

printf("

栈s的基本运算如下:

\n"

);

(1)初始化栈s\n"

InitStack(s);

(2)栈为%s\n"

(StackEmpty(s)?

"

空"

:

非空"

));

(3)依次进栈元素a,b,c,d,e\n"

Push(s,'

a'

b'

c'

d'

e'

(4)栈为%s\n"

(5)出栈序列:

while(!

StackEmpty(s))

{

Pop(s,e);

printf("

%c"

e);

}

(6)栈为%s\n"

(7)释放栈\n"

DestroyStack(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) //初始化栈s

DestroyStack(LiStack*&

s) //销毁栈

StackEmpty(LiStack*s) //判断栈是否为空

Push(LiStack*&

Pop(LiStack*&

GetTop(LiStack*s,ElemType&

e) //取栈顶元素

对应的程序如下:

algo3-2.cpp

typedefstructlinknode

ElemTypedata;

//数据域

structlinknode*next;

//指针域

}LiStack;

voidInitStack(LiStack*&

s) //初始化栈s

{ s=(LiStack*)malloc(sizeof(LiStack));

next=NULL;

voidDestroyStack(LiStack*&

{ LiStack*p=s,*q=s->

next;

while(q!

=NULL)

{ free(p);

p=q;

q=p->

free(p);

//此时p指向尾节点,释放其空间

boolStackEmpty(LiStack*s) //判断栈是否为空

next==NULL);

voidPush(LiStack*&

{ LiStack*p;

p=(LiStack*)malloc(sizeof(LiStack));

p->

data=e;

//新建元素e对应的节点*p

next=s->

//插入*p节点作为开始节点

next=p;

boolPop(LiStack*&

if(s->

next==NULL) //栈空的情况

p=s->

//p指向开始节点

e=p->

data;

next=p->

//删除*p节点

//释放*p节点

boolGetTop(LiStack*s,ElemType&

next->

设计exp3-2.cpp主程序

exp3-2.cpp

externvoidInitSta

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

当前位置:首页 > 初中教育 > 初中作文

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

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