栈实验报告.doc北京建筑大学
理学院《数据结构与算法》课程实验报告
课程名称《数据结构与算法》实验名称栈的创建以及应用实验地点基C-419 日期_2015-4-25
姓名班级学号指导教师成绩
【实验目的】
【实验内容】
括号匹配
【实验要求】
要求:在实验报告中写出栈的ADT表示;
在实验报告中给出数据类型定义和核心算法和程序;
在实验报告中罗列实验过程中出现的问题和解决的方法;
打包上交调试后的完整程序,提交实验报告;
实验之前写出实验报告的大概框架,实验过程中填写完整.
实验时携带需要上机调试的程序;
实验评分:实验之前预习占20%,实验报告书写情况占50%,运行情况30%.
【实验步骤】
实验中出现的问题以及解决方法:
代码里面用到getch()报错,后来在前面提前声明头文件#include<>可以运行.
不知道怎么实验括号的匹配检验,通过查资料了解到括号匹配检验的实现需要用switch,case,break,default等等语句来实现.
设定好的小中括号可以正常按代码运行,若遇到其他的大括号和数字等,也可以运行匹配成功,问题没有得到解决.
【实验结果】
1、ADT表示:
ADT Stack{
InitStack(&S)//构造一个空栈S
GetTop(S,&e)//取栈顶元素
Push(&S,e)//插入新的栈顶元素
Pop(&S,&e)//删除栈顶元素
DestroyStack(&S)//销毁栈
}
2、数据结构的定义:
typedef struct //定义结构体
{selemtype *base; //定义栈底指针
selemtype *top; //定义栈顶指针
int stacksize; //定义栈的大小
} sqstack; //sqstack为结构体类型
3、核心算法与代码:
#define STACKINCREAMENT 10
#define STACK_INIT_SIZE 100
#define OVERFLOW -2
#define OK 1
#define ERROR 0
typedef int status ;
typedef char Elemtype;
#include<>
#include<>
#include<>
#include<>
typedef struct
{
Elemtype *base;
Elemtype *top;
status stacksize;
}sqstack;
status Init(sqstack *s)
{
s->base=(Elemtype *)malloc(STACK_INIT_SIZE*sizeof(Elemtype));
if(!s->base) exit(OVERFLOW);
s->top=s->base;
s->stacksize=STACK_INIT_SIZE ;
return OK;
}
status Gettop(sqstack *s,Elemtype e)
{
if(s->top==s->base
栈实验报告 来自淘豆网m.daumloan.com转载请标明出处.