数据结构实验报告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
国企改制下上海家化财务分析05-16
关于考取中国药科大学的几点意见12-01
《勤俭节约,从我做起》广播稿03-19
2017年在线学习普法考试—云南省边境管理条例试卷及答案11-12
开展意识形态领域反分裂反渗透斗争11-19
最新-初中语文教师述职报告 精品06-19
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 数据结构
- 实验
- 报告
- 律伴网知名湖州律师姚杰点评:重组家庭再离婚,继父索要抚养费清关系
- 关爱福利院儿童活动策划书
- 全国自考历年线性代数试题及答案 - 图文
- 实验04验证控件和用户控件
- OSP工艺和SMT - 用指南
- 2016年学术学位博士生招生简章
- 2017四年级下册英语期末复习题8套
- 统计学实验一 班级学号姓名
- 哈里·弗里德曼《销售洗脑》观后感 - 1200字
- 怎样看待中小学生上课外补习班的问题
- 3PE--抛丸除锈--施工 - 技术方案 - 图文
- 2013年广西中小学教师系列高级评委会评审通过人员名单:1696
- 跟管钻孔法施工方案
- 2018上半年重庆公务员申论公文题讲解:发文事由的常见写法
- 企业文化 - 部门职责
- 关于进一步加强人防工程安全管理工作的通知
- 提单的缮制规范1
- 第一章(组织学绪论)
- 土地
- 《蓦山溪 刘子晕》阅读试题附答案