数据结构实验报告5
更新时间:2023-10-02 10:51:01 阅读量: 综合文库 文档下载
数据结构实验报告——实验5
学号: 姓名: 得分:______________
一、实验目的
1、复习栈的逻辑结构、存储结构及基本操作; 2、掌握顺序栈、链栈。
二、实验内容
1、(必做题)假设栈中数据元素类型是字符型,请采用顺序栈实现栈的以下基本操作: (1)Status InitStack (&S) //构造空栈S; (2)Status Push(&S, e) //元素e入栈S;
(3)Status Pop(&S, &e) //栈S出栈,元素为e。 2、(必做题)请实现:对于一个可能包括括号{}、[]、()的表达式,判定其中括号是否匹配。
三、算法描述
(采用自然语言描述)
1. 构建空栈s,输入元素,将元素依次入栈,遍历打印栈中元素,输出栈顶元素,打印被输出的元素,遍历打印栈中元素。
2.构建空栈,输入表达式,使用函数count判断表达式中括号是否匹配,如果匹配输出匹配正确,不匹配则输出匹配错误。
四、详细设计
1.
开始 构建空栈s 输入元素 将元素依次入栈 遍历打印栈中元素 输出栈顶元素 打印被输出的元素 遍历打印栈中元素 结束 1
2.
开始 构建空栈s 输入表达式 使用函数count判断表达式中括号是否匹配 输出匹配错误 输出匹配正确 结束
五、程序代码
(给出必要注释) 1.
#include
typedef struct node* SqStack; typedef char ElemType;
struct node//栈的数据结构 {
int top;
ElemType data[MaxSize]; };
void StatusInitStack(SqStack *L)//构造空栈S {
(*L) = (SqStack*)malloc(sizeof(SqStack)); (*L)->top = -1; }
2
void StatusPush(SqStack L, ElemType e)//元素e入栈S {
if (L->top == MaxSize - 1) {
printf(\栈满\\n\ } else {
L->top++;
L->data[L->top] = e; } }
void StatusPop(SqStack L, ElemType *e)//栈S出栈,元素为e {
if (L->top == -1) {
printf(\栈空\\n\ } else {
*e = L->data[L->top]; L->top--; } }
void Print(SqStack L)//遍历输出 {
int i = 0;
for(i = 0; i <= L->top; i++) {
printf(\ }
printf(\}
int main() {
SqStack s; ElemType e; ElemType* y; y = &e;
StatusInitStack(&s);
printf(\输入入栈数据:\ scanf(\
3
while (e!='\\n') {
StatusPush(s, e); scanf(\ }
printf(\目前栈中元素为:\\n\ Print(s);
StatusPop(s, y);
printf(\出栈元素是:%c\\n\
printf(\栈顶元素出栈后,栈为:\\n\ Print(s); } 2.
#include
#define STACK_INIT_SIZE 10 #define STACK_GROW_SIZE 5 #define ELEMTYPE char
typedef struct /*建立一个栈的首结点*/ {
ELEMTYPE * base; ELEMTYPE * top; int stacksize; } SpStack;
int InitStack(SpStack *s) /*建立空的栈并返回首地址*/ {
s->base=((ELEMTYPE*)malloc(STACK_INIT_SIZE*sizeof(ELEMTYPE))); if (!s->base) return 0; s->top=s->base;
s->stacksize=STACK_INIT_SIZE; return 1; }
int StackEmpty(SpStack *s) /*判断栈是否为空*/ {
if (s->top==s->base) return 1; else return 0; }
int Push(SpStack *s,ELEMTYPE e) /*往栈顶插入元素即进栈*/
4
{
if (s->top-s->base>=s->stacksize) /*判断是否栈满*/ {
s->base=((ELEMTYPE*)realloc(s->base,(s->stacksize+STACK_GROW_SIZE)*sizeof(ELEMTYPE))); if (!s->base) return 0;
s->stacksize+=STACK_GROW_SIZE; s->top=s->base+s->stacksize; }
*s->top++=e; return 1; }
int Pop(SpStack *s,ELEMTYPE *e) /*让栈顶元素依次输出即出栈*/ {
if (StackEmpty(s)) return 0; *e=*(--s->top); return 1; }
int Count(SpStack *s) {
ELEMTYPE e[STACK_INIT_SIZE*2]; ELEMTYPE e1; int i;
InitStack(s); gets(e);
if ('\\n'==e[strlen(e)-1]) e[strlen(e)-1]=0; for (i=0; e[i]!='\\0'; i++) {
switch (e[i]) {
case '(': case '[': case '{':
Push(s,e[i]); break; case ')': case ']': case '}':
if(StackEmpty(s)) {
printf(\匹配错误\\n\
5
正在阅读:
数据结构实验报告510-02
公司物资管理办法07-22
一次特殊的活动作文1000字07-02
人教版《贵阳市生态文明城市建设读本》06-05
Review 2014-11 CELL Integrative Biology of Exercise - 图文12-19
小学阶段容易读错的生字12-20
9.3大阅兵观后感03-15
组合数学北大教材习题 - answer11-02
沈阳群升置业有限公司沈阳新天地(一期)06-04
- 计算机试题
- 【2012天津卷高考满分作文】鱼心人不知
- 教育心理学历年真题及答案--浙江教师资格考试
- 20180327-第六届“中金所杯”全国大学生金融知识大赛参考题库
- 洪林兴达煤矿2018年度水情水害预测预报
- 基本要道讲义
- 机电设备安装试运行异常现象分析与对策
- 《有机化学》复习资料-李月明
- 非常可乐非常MC2--非常可乐广告策划提案 - 图文
- 2011中考数学真题解析4 - 科学记数法(含答案)
- 企业人力资源管理师三级07- 09年真题及答案
- 基于单片机的光控自动窗帘控制系统设计说明书1 - 图文
- 20160802神华九江输煤皮带机安装方案001
- (共53套)新人教版一生物必修2(全册)教案汇总 word打印版
- 2014行政管理学总复习
- 中国银监会关于加强地方政府融资平台贷款风险监管的指导意见
- 民宿酒店核心竞争与研究
- 游园活动谜语大全2012
- 河南省天一大联考2016届高三英语5月阶段性测试试题(六)(A卷)
- 小型超市管理系统毕业论文详细设计4
- 数据结构
- 实验
- 报告
- 律伴网知名湖州律师姚杰点评:重组家庭再离婚,继父索要抚养费清关系
- 关爱福利院儿童活动策划书
- 全国自考历年线性代数试题及答案 - 图文
- 实验04验证控件和用户控件
- OSP工艺和SMT - 用指南
- 2016年学术学位博士生招生简章
- 2017四年级下册英语期末复习题8套
- 统计学实验一 班级学号姓名
- 哈里·弗里德曼《销售洗脑》观后感 - 1200字
- 怎样看待中小学生上课外补习班的问题
- 3PE--抛丸除锈--施工 - 技术方案 - 图文
- 2013年广西中小学教师系列高级评委会评审通过人员名单:1696
- 跟管钻孔法施工方案
- 2018上半年重庆公务员申论公文题讲解:发文事由的常见写法
- 企业文化 - 部门职责
- 关于进一步加强人防工程安全管理工作的通知
- 提单的缮制规范1
- 第一章(组织学绪论)
- 土地
- 《蓦山溪 刘子晕》阅读试题附答案