![2022年《数据结构(本)》形考任务实践活动3_第1页](http://file4.renrendoc.com/view8/M02/2C/1C/wKhkGWcMcK-AcAB1AAGbuGxPWLU975.jpg)
![2022年《数据结构(本)》形考任务实践活动3_第2页](http://file4.renrendoc.com/view8/M02/2C/1C/wKhkGWcMcK-AcAB1AAGbuGxPWLU9752.jpg)
![2022年《数据结构(本)》形考任务实践活动3_第3页](http://file4.renrendoc.com/view8/M02/2C/1C/wKhkGWcMcK-AcAB1AAGbuGxPWLU9753.jpg)
![2022年《数据结构(本)》形考任务实践活动3_第4页](http://file4.renrendoc.com/view8/M02/2C/1C/wKhkGWcMcK-AcAB1AAGbuGxPWLU9754.jpg)
![2022年《数据结构(本)》形考任务实践活动3_第5页](http://file4.renrendoc.com/view8/M02/2C/1C/wKhkGWcMcK-AcAB1AAGbuGxPWLU9755.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022年国家开放大学数据结构(本)形考任务实践活动3
实验3栈、队列、递归设计
数据结构课程实验报告
学生姓名学号
班级指导老师
实验名称栈、队列、递归程序设计实验成绩
实!险报告
实验目的:
编写一个算法,输出指定栈中的栈底元素,并使得原栈中的元素倒置。
实
验实验要求:
概(1)正确理解栈的先进后出的操作特点,建立.初始栈,通过相关操作显示栈底元素。
述(2)程序中要体现出建栈过程和取出栈底元素后恢复栈的入栈过程,按堆栈的操作
规则打印结果栈中的元素。
实验基本原理;
(1)采用顺序栈,即用数组存储核元素。
(2)设定一个临时队列,用来存放从初始栈中出栈的元素。
(3)取出栈底元素后,将队列中的元素逐一出队并压入初始栈中。
实验设计思路、步骤和方法等:
(1)根据栈的先进后出特点,来进行实验
实(2)建立顺序栈、临时队列、依次取出压入栈
验实验过程(实验中涉及的记录、数据、分析):
内4include<stdio.h>
容^include<stdlib.h>
4defineMaxSize100
typedefintElemType;
typedefstruct
(
ElemTypedata[MaxSize];
inttop;
}SeqStack;
typedefstruct
(
ElemTypedata[MaxSize];
intfront,rear;
)SeqQueue;
voidInitStack(SeqStack*s);
intStackEmpty(SeqStack*s);
intStackFul1(SeqStack*s);
voidPush(SeqStack*s,ElemTypex);
1
ElemTypePop(SeqStack*s);
ElemTypeGetTop(SeqStack*s):
voidDispStack(SeqStack*s);
voidDispBottom(SeqStack*s);
voidInilQueue(SeqQueue*sq);
intQueueEmpty(SeqQueue*sq);
voidInQueue(SeqQueue*sq,ElemTypex);
ElemTypeOutQueue(SeqQueue*sq,ElemTypex);
ElemTypeGetQueue(SeqQueue*sq)
voidmain()
(
SeqStack*s;
SeqQueue*sq;
ElemTypex;
intn,i;
初始化栈s\n〃);
s=(SeqStack*)ma1loc(sizeof(SeqStack));
InitStack(s);
printf("(2)栈为%s\n”,(StackEmpty(s)?"空非空〃));
printf("(3)输入要进栈的数据个数:”);
scanf(飞d”,&n):
printf("依次输入进栈的%d个整数:〃,n);
for(i=0;i<n;i++)
(
scanf(飞d”,&x);
Push(s,x);
)
printf(*(4)栈为%s\n",(SiackEmply(s)?"空":"非空"));
printf("(5)从栈顶到栈底的元素依次为:"):DispStack(s):
printf("(6)栈底元素为:");DispBottom(s);
printf(*(7)初始化队列sq\n");
sq=(SeqQueue*)ma1loc(sizeof(SeqQueue));
InitQucue(sq);
printf(*(8)队列为%s\n”,(QueueEmpty(sq)?"空":"非空"));
prinlf("(9)出栈/入队的元素依次为:“);
while(!StackEmpty(s))
(
x=Pop(s);
printf(*%d",x);
InQueue(sq,x);
)
2
printfC\n*);
printf(*(10)栈为%s,”,(StackEmpty(s)?"空":"非空"));
printf("队列为%s\n",(QueueEmpty(sq)?"空":"非空"));
printfCdl)出队/进栈的元素依次为:");
while(!QueueEmpty(sq))
(
x=OutQueue(sq,x);
printf(*%d",x);
Push(s,x);
)
prinlf('\n");
printf("(12)栈为%s,〃,(StackEmpty(s)?"空"<非空"));
printf("队列为%s\n”,(QueueEmpty(sq)?"空":"非空"));
printf("(13)从栈顶到栈底的元素依次为:“);DispStack(s);
printf("(14)栈底元素为;DispBottom(s);
free(s);
free(sq):
)
voidInitStack(SeqStack*s)
(
s->top=-l;
)
intStackEmpty(SeqStack*s)
(
if(s->top==-l)
return1;
else
return0;/*否则返回0*/
)
intStackFull(SeqStack*s)
(
if(s->top==MaxSize-1)
return1;
else
return0;
)
3
voidPush(SeqStack*s,ElemTypex)
(
if(StackEul1(s))
(
prinlf("栈满溢出错误!\n0;
exit(l);
)
s->top++;
s->data[s->top]=x;
)
ElemTypePop(SeqStack*s)
(
if(StackEmpty(s))
(
printfC栈下溢错误!\n");
exit(1);
)
s->top—;
returns->dataLs->top+l];
)
ElemTypeGetTop(SeqStack*s)
(
if(StackEmpty(s))
(
printf-栈下溢错误!\n〃):
exit(1);
)
returns->data[s->top];
)
voidDispStack(SeqStack*s)
(
inti;
for(i=s->top;i>=0;i—)
printf(*%ds->data[i]);
printfC\n*);
)
4
voidDispBottom(SeqStack*s)
(
printf'C^d”,s~>data[0]);
printf('\n");
)
voidInitQueue(SeqQueue*sq)
(
sq->front=sq->rear=0;
)
intQueueEmpty(SeqQueue*sq)
(
if(sq->rear=sq->front)
return1;
else
return0;
)
voidInQueue(SeqQueue*sq,ElemTypex)
(
if((sq->rear+1)%MaxSize==sq->front)
(
printf("循环队列已满!\n");
exit(1);
}
sq->data[sq->rear]=x;
sq->rear=(sq->rear+l)%MaxSize;
)
ElemTypeOutQueue(SeqQueue*sq,ElemTypex)
(
if(QueueEmpty(sq))/*队空*/
(
prinlf(〃循环队列己空,不能进行出队操作!\<):
exit(1);
}
else1
x=sq->data[sq->front];
sq->front=(sq->fronl+1)%MaxSize;
5
returnx;
)
)
ElemTypeGetQueue(SeqQueue*sq)
(
ir(QueueEmpty(sq))
(
printf("队列已空,不能进行出队操作!\n");
exit(l);
)
returnsq->data[sq->front]:
)
实验结果:
(1)初始化栈
(2)栈为空
(3)输入要进栈的数据个数为5,依次输入进栈的5个整数:12345
(4)栈为非空
(5)从栈顶到栈底的元素依次为:54321
(6)栈底元素为:1
(7)初始化队列为:1
(8)队列为空
(9)出栈/入队的元素依次为:54321
(10)栈为空,队列为空
(11)出队/进栈的元素依次为:54321
(12)栈为非空,队列为空
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《新生儿疾病筛查》课件
- 《竹教育大学》课件
- 《通风与空调工程》课件
- 汽车电气设备构造与维修课件
- 成教学生艺术素养教育的现状和提升路径
- 2025年闸机系统项目合作计划书
- 绿色插画风入职培训主题
- 智慧出行策略推广模板
- 重阳节文化讲解模板
- 2025年纳迪克酸酐项目发展计划
- 2024年10月自考13003数据结构与算法试题及答案
- 华为经营管理-华为激励机制(6版)
- 2024年标准化工地建设管理实施细则(3篇)
- 干燥综合征诊断及治疗指南
- 粮油厂食品安全培训
- 南京信息工程大学《教师领导力》2022-2023学年第一学期期末试卷
- 电力基本知识培训课件
- 2024年大学生电子版三方协议书模板
- 安踏组织架构分析
- 北师大版五年级(下册)数学知识要点归纳
- 2024年山东省淄博市中考历史试题卷(含答案解析)
评论
0/150
提交评论