数据结构顺序栈
实验报告
化学实验报告单总流体力学实验报告观察种子结构实验报告观察种子结构实验报告单观察种子的结构实验报告单
数据结构实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
顺序栈
《数据结构与算法》实验报告
?1?
一、 实验内容
1(栈的实现
2(顺序栈的基本操作
二、 实验目的及要求
熟悉栈的基本操作在顺序栈的实现。通过具体应用实例在复习高级编程语言使用方法的基础上初步了解数据结构的应用。
三、 设计分析与算法描述 顺序栈的存储结构: typedef struct
{
int elem[Stack_Size]; int top; }SeqStack;
void InitStack(SeqStack *S)//构造一个空栈(初始化) int Push(SeqStack *S,int x)//进栈 int Pop(SeqStack *S,int *x)//出栈 int IsEmpty(SeqStack *S)//判栈是否空 int IsFull(SeqStack *S)//判栈是否满 int GetTop(SeqStack *S,int *x)//读栈顶
四、 附件:带注释的源程序
#includeiostream.h #define Stack_Size 50 #define false 0 #define
true 1
?2?
typedef struct {
int elem[Stack_Size];
int top;
}SeqStack;
void InitStack(SeqStack *S)//构造一个空栈(初始化) { S-top=-1;
}
int Push(SeqStack *S,int x)//进栈 { if(S-top==Stack_Size-1)//栈已满
return (false); S-top++;
S-elem[S-top]=x; return (true);
}
int Pop(SeqStack *S,int *x)//出栈 { if(S-top==-1)//栈已空
return (false);
else {
*x=S-elem[S-top];
3?
?
}
}
S-top--; return (true);
int IsEmpty(SeqStack *S)//判栈是否空 { }
int IsFull(SeqStack *S)//判栈是否满 { }
int GetTop(SeqStack *S,int *x)//读栈顶 {
if(S-top==-1)
return (false);
if(S-top==Stack_Size-1) return (true); if(S-top==-1)
return (true);
else
return (false);
else
return (false);
else {
*x=S-elem[S-top];
?4?
return (true);
}
}
int main() { int i,temp; SeqStack st; InitStack(&st);
for(i=0;i10;i++)
Push(&st,i);
while(IsEmpty(&st)) {Pop(&st,&temp);couttempendl;
}
return 0;
}
《数据结构与算法》实验报告
?5?
篇二:数据结构栈和队列实验报告
一、实验目的和要求
(1)理解栈和队列的特征以及它们之间的差异,知道在何时使用那种数据结构。
(2)重点掌握在顺序栈上和链栈上实现栈的基本运算算法,注意栈满和栈空的条件。
(3)重点掌握在顺序队上和链队上实现队列的基本运算算法,注意循环队队列满和队空的条件。
(4)灵活运用栈和队列这两种数据结构解决一些综合应用问题。
二、实验环境和方法
实验方法:
(一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。
(二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。
(三)根据实验内容,编译程序。
实验环境:Windows xpVisual C++6.0
三、实验内容及过程描述
实验步骤:
? 进入Visual C++ 6.0集成环境。
? 输入自己编好的程序。
? 检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有
错,及时改正。
? 进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,
根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ? 运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果
是否正确,应运行多次,分别检查在不同情况下结果是否正确。
实验内容:编译以下题目的程序并调试运行。
1)、编写一个程序algo3-1.cpp,实现顺
的各种基本运算,并在此基础上设计一
程序并完成如下功能:
(1)初始化栈s;
(2)判断栈s是否非空; 序栈个主
(3)依次进栈元素a,b,c,d,e;
(4)判断栈s是否非空;
(5)输出出栈序列;
(6)判断栈s是否非空;
(7)释放栈。 图3.1 Proj3_1 工程组成
本工程Proj3_1的组成结构如图3.1所示。本工程的模块结构如
图3.2所示。图中方框
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示函数,方框中指出函数名,箭头方向表示函数间的调用关系。
图3.2 Proj3_1工程的程序结构图
其中包含如下函数:
InitStack(SqStack *&s) //初始化栈S
DestroyStack(SqStack *&s) //销毁栈s
StackEmpty(SqStack *s) //判断栈空
Push(SqStack *&s,ElemType e) //进栈
Pop(SqStack *&s,ElemType &e) //出栈
GetTop(SqStack *s,ElemType &e) //取栈顶元素
对应的程序如下:
//文件名:algo3-1.cpp
#include stdio.h
#include malloc.h
#define MaxSize 100
typedef char ElemType;
type(转 载于:wWw.xIeLw.com 写
论文
政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载
网:数据结构顺序栈实验报告)def struct
{
ElemType data[MaxSize];
int top; //栈顶指针
} SqStack;
void InitStack(SqStack *&s) //初始化栈S
{ s=(SqStack *)malloc(sizeof(SqStack));
s-top=-1; //栈顶指针置为-1
}
void DestroyStack(SqStack *&s) //销毁栈s
{
free(s);
}
bool StackEmpty(SqStack *s) //判断栈空
{
return(s-top==-1);
}
bool Push(SqStack *&s,ElemType e) //进栈
{ if (s-top==MaxSize-1) //栈满的情况,即栈上溢出
return false;
s-top++; //栈顶指针增1
s-data[s-top]=e; //元素e放在栈顶指针处
return true;
}
bool Pop(SqStack *&s,ElemType &e) //出栈
{ if (s-top==-1) //栈为空的情况,即栈下溢出
return false;
e=s-data[s-top]; //取栈顶指针元素的元素
s-top--;//栈顶指针减1
return true;
}
bool GetTop(SqStack *s,ElemType &e) //取栈顶元素
{ if (s-top==-1) //栈为空的情况,即栈下溢出
return false;
e=s-data[s-top]; //取栈顶指针元素的元素
return true;
}
设计exp3-1.cpp程序如下 //文件名:exp3-1.cpp
#include stdio.h
#include malloc.h
#define MaxSize 100
typedef char ElemType;
typedef struct
{
ElemType data[MaxSize];
int top; //栈顶指针
} SqStack;
extern void InitStack(SqStack *&s);
extern void DestroyStack(SqStack *&s);
extern bool StackEmpty(SqStack *s);
extern bool Push(SqStack *&s,ElemType e);
extern bool Pop(SqStack *&s,ElemType &e);
extern bool GetTop(SqStack *s,ElemType &e);
void main()
{
ElemType e;
SqStack *s;
printf(栈s的基本运算如下:\n);
printf( (1)初始化栈s\n);
InitStack(s);
printf( (2)栈为%s\n,(StackEmpty(s)?空:非空));
printf( (3)依次进栈元素a,b,c,d,e\n);
Push(s,'a');
Push(s,'b');
Push(s,'c');
Push(s,'d');
Push(s,'e');
printf( (4)栈为%s\n,(StackEmpty(s)?空:非空));
printf( (5)出栈序列:);
while (!StackEmpty(s))
{
Pop(s,e);
printf(%c ,e);
}
printf(\n);
printf( (6)栈为%s\n,(StackEmpty(s)?空:非空));
printf( (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.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 *&s,ElemType e) //进栈
Pop(LiStack *&s,ElemType &e) //出栈
GetTop(LiStack *s,ElemType &e) //取栈顶元素
对应的程序如下:
//文件名:algo3-2.cpp
#include stdio.h
#include malloc.h
typedef char ElemType;
typedef struct linknode
{
ElemType data; //数据域
篇三:数据结构_实验5_顺序栈的基本操作
实 验 报 告
实验课程数据结构实验项目实验五、顺序栈的基本操作 实验
地点指导教师班 级学生姓名学 号教师评分日 期
一、实验目的
1、掌握栈的顺序存储结构;
2、掌握顺序栈及其基本操作的实现。
二、实验设备
1. 安装有WinXP的PC一台;
2. 安装有软件VC6或者Visual Studio2005。
三、实验内容
1、建立的顺序栈相关数据结构;
2、实现顺序栈的插入、删除、查找等基本操作;
3、利用顺序栈实现数制的转换。
四、实验步骤
1. 定义表示整数的数据元素。
2. 根据教材的内容,定义顺序栈的结构体。
3. 根据教材的内容,编写代码,实现顺序栈的下列函数。
第2页 共3页
4. 根据教材48页的内容,实现十进制数N到8进制数据转换,将代码复制到下面。
5. 改进/修改上述代码,实现十进制到8进制、2进制、16进制的转换,将代码复制到
下面。
6. 定义main函数,利用上述函数编写代码,实现下列数据到16进制、8进制、2进
制的转换。(将代码以及执行的过程截图到下面)
876778657, 203498089, 49857, 21387,3099,34234.
五、实验
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
请写出本实验的心得体会。
第3页 共3页