文档介绍:《数据结构》课程实验报告
实验名称
程序栈和队列的实现
实验序号
3
实验日期
2012-4-18
姓 名
曹志华
院系
计算机科学与信息工程学院
班 级
C1
学 号
专 业
计算机科学与技术
指导教师
武伟
成 绩
教师评语
一、实验目的和要求
理解栈和队列的特性以及它们之间的差异,知道在何时使用哪种数据结构;
掌握栈和队列的顺序存储结构及其基本运算实现;
注意栈满和栈空的条件;
重点掌握在顺序队上和链队上实现队列的基本运算算法,注意循环队队满和队空的条件;
灵活运用栈和队列这两种数据结构解决一些综合应用问题。
二、实验项目摘要
实验1:编写一个程序,实现顺序栈的各类基本运算,并在此基础上设计一个主程序完成如下功能:
初始化栈s;
判断栈s是否非空;
以此进栈元素a,b,c,d,e;
判断栈s是否非空;
输出栈长度;
输出从栈顶到栈底元素;
输出出栈序列;
判断栈s是否非空;
释放栈。
实验2:编写一个程序,实现顺序环形队列的各类基本运算,并在此基础上设计一个主程序完成如下功能:
1. 初始化队列q;
2. 判断队列q是否为空;
3. 依次进队元素a,b,c;
4. 出队一个元素,输出该元素;
5. 输出队列q的元素个数;
6. 依次进队列元素d,e,f;
7. 输出队列q的元素个数;
8. 输出出队序列;
9. 释放队列。
三、实验预****内容
1,栈和环形队列的顺序存储结构及其基本运算实现
栈的顺序存储结构以及基本运算实现:
初始化栈
销毁栈
求栈的长度
判断栈是否为空
进栈(Push)
出栈(Pop)
显示栈中元素
2. 环形队列的性质:
环形队列的队头指针和队尾指针初始化时都置为0;
三、实验结果与分析
1. 实验结果:
实验1:
实验2:
:
本次实验需要对栈和队列进行充分的了解,虽然栈和队列实质上是不同的,但在编写程序时大致相似。通常栈可以用顺序的方式存储,分配一块连续的存储区域存放栈中元素,并用一个变量指向当前的栈顶。而队列的顺序存储结构需要使用一个数组和两个整数型变量来实现。
实验1:
#include<>
#include<>
#define MaxSize 1024
typedef char ElemType;
typedef struct
{
ElemType data [MaxSize];
int top ;
}SqStack;
void InitStack(SqStack *&s)//初始化栈
{
s=(SqStack *)malloc(sizeof(SqStack));
s->top=-1;
}
int StackEmpty(SqStack*s)//判断栈是否为空
{
return(s->top==-1);
}
int Push(SqStack *&s,ElemType e)//进栈
{
if(s->top==MaxSi