北京邮电大学信息与通信工程学院 数据结构实验报告 实验名称: 实验 X——XXXX 学生姓名: XXX 班 级: XXX 班内序号: XXX 学 日 号: XXX 期: 20XX 年 X 月 X 日 1.实验要...
《数据结构与算法》课程实验报告( 3) 实验题目:姓名:
括号匹配问题 学号:
1312100034 专业:
实验地点:
班级:
2013级 徐布秋 系名:
体育工程与信息技术学院 实验时间:
2014.9.25 教育技术学 指导老师:黄雪娟 【实验概述】 1.实验目的及要求 (1)熟悉并写出栈的逻辑结构表示 (2)实现栈的存储表示 (3)实现栈的操作 2.实验原理 原理:
顺序栈 3.实验环境(使用的软件) VC++6.0 【实验内容】 1.实验方案设计 一、概要设计 2.实验过程(实验步骤、记录、数据、分析) 【实验步骤】 1. 栈的ADT表示 ADT Stack{ 数据对象:D={ai|ai∈ ElemSet,i=1,2,…,n,n>=0} 数据关系:R1={<ai-1,ai>|ai-1,ai ∈D,i=2,…,n} 约定an为栈顶端,a1为栈底端 基本操作:
Status InitStack(&s) 操作结果:构造一个空栈s。
Status Push( &s, e) 初始条件:栈s已经存在。
操作结果:插入元素e为新的栈顶元素。
Status Pop( &s, &e) 初始条件:栈s已经存在,并不为空。
操作结果:删除s的栈顶元素,并用e返回其值。
Status Check( &s, e) 初始条件:栈s已经存在,并不为空。
操作结果:判断括号是否匹配。
Status EnterString( &s) }ADT Stack 2. 数据类型定义和核心算法和程序 ? 数据类型定义:
typedef int Status;
typedef char SElemType;
typedef struct {//栈的顺序存储表示 SElemType* base;
SElemType* top;
int stacksize;
}SqStack;
int x=0;
SElemType a;
SElemType e;
? 核心算法:
? 程序:
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define TURE 1 #define FALSE 0 #define ERROR 0 #define #define #define #define #define typedef typedef OK 1 INFEASIBLE -1 OVERFLOW -2 STACK_INIT_SIZE 100 STACKINCREMENT 10 int Status;
char SElemType; typedef struct {//栈的顺序存储表示 SElemType* base;
SElemType* top;
int stacksize;
}SqStack;
int x=0;
Status InitStack(SqStack &s){//构造一个空栈S s.base = (SElemType*)malloc(STACK_INIT_SIZE sizeof(SElemType));
if (!s.base) exit(OVERFLOW);//内存分配失败 s.top = s.base;
s.stacksize = STACK_INIT_SIZE;
return OK;
} Status Push(SqStack &s,SElemType e){ //插入元素e为新的栈顶元素 if(s.top-s.base>=s.stacksize){ //栈满追加存储空间。
s.base = (SElemType*)realloc(s.base,(s.stacksize+ STACKINCREMENT)*sizeof(SElemType));
if(!s.base) exit(OVERFLOW);//内存分配失败 s.top = s.base+s.stacksize;
s.stacksize += STACKINCREMENT;
} *s.top++ =e;
return OK;
} * Status Pop(SqStack &s,SElemType &e){ //若栈不空,则删除s的栈顶元素,用e返回其值,并返回ok;否则返 回error。
if(s.top == s.base) return ERROR;
e = * --s.top;
return OK;
} /////////////////////////////////////////////////////////// ///////// Status Check(SqStack &s,SElemType e){ SElemType a;
Pop(s,a);
if( a=='('
&&
e==')'
|| a=='['&&
e==']'
|| a=='{'&&
e=='}'
) return TURE;
return ERROR;
} Status EnterString(SqStack &s){ SElemType e;
while (1){ scanf("%c",&e);
if(e=='('||e=='['||e=='{') Push(s,e);
else if(e==')'||e==']'||e=='}'){ if(!Check(s,e)){ return FALSE;
break;} } else if(e!='\n'){ x=1;
return FALSE;
break;
} else break;
} } void main() { SqStack s;
InitStack(s);
if(EnterString(s)) printf("括号匹配\n");
else if(x==1) printf("输入的不是括号\n");
else printf("括号不匹配\n");
} 3.结果与结论(实验结果截图、结果分析) 【小结】 。 【实验评分】 (共20分) 课堂表现(2分) 成绩:
指导老师签名:
日期:
实验结果(10分) 报告书写(8分)
《数据结构与算法》课程实验报告 实验名称 姓 名 喻晓天 专业 顺序表 网络工程 指导教师 班 级 9104302 实验序号 学 成 号 绩 1 810411226 实验日期 一、实验目的 3/8/2013 荣...
百度文库 应用文书 表格/ 模板 表格类 模板 上传文档支持以下设备:扫二维码下载 ... 数据结构实验报告 格式实验 1 线性表的基本操作 一、实验目的 1.掌握使用 VC+... 云南大学软件...
百度文库 应用文书 表格/ 模板 表格类 模板 上传文档支持以下设备:扫二维码下载 ... 数据结构实验报告 格式实验 1 线性表的基本操作 一、实验目的 1.掌握使用 VC+... 软件工程系 ...