欢迎来到天天文库
浏览记录
ID:58002690
大小:16.49 KB
页数:12页
时间:2020-04-19
《电大实验3-栈、队列、递归程序设计实验报告.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、数据结构课程实验报告学生姓名王稼骏学号49班级指导老师实验名称栈、队列、递归程序设计实验成绩实验报告实验概述实验目的:编写一个算法,输出指定栈中的栈底元素,并使得原栈中的元素倒置。实验要求:(1)正确理解栈的先进后出的操作特点,建立初始栈,通过相关操作显示栈底元素。(2)程序中要体现出建栈过程和取出栈底元素后恢复栈的入栈过程,按堆栈的操作规则打印结果栈中的元素。实验基本原理:(1)采用顺序栈,即用数组存储栈元素。(2)设定一个临时队列,用来存放从初始栈中出栈的元素。(3)取出栈底元素后,将队列中的元素逐一出队并压入初始栈中。实验内容实验设计思路、步骤和方法等:(1)根据栈的先
2、进后出特点,来进行实验(2)建立顺序栈、临时队列、依次取出压入栈实验过程(实验中涉及的记录、数据、分析):#include#include#defineMaxSize100typedefintElemType;typedefstruct{ElemTypedata[MaxSize];inttop;}SeqStack;typedefstruct{ElemTypedata[MaxSize];intfront,rear;}SeqQueue;voidInitStack(SeqStack*s);intStackEmpty(SeqStack*s);in
3、tStackFull(SeqStack*s);voidPush(SeqStack*s,ElemTypex);ElemTypePop(SeqStack*s);ElemTypeGetTop(SeqStack*s);voidDispStack(SeqStack*s);voidDispBottom(SeqStack*s);voidInitQueue(SeqQueue*sq);intQueueEmpty(SeqQueue*sq);voidInQueue(SeqQueue*sq,ElemTypex);ElemTypeOutQueue(SeqQueue*sq,ElemTypex);Elem
4、TypeGetQueue(SeqQueue*sq)voidmain(){SeqStack*s;SeqQueue*sq;ElemTypex;intn,i;printf("(1)初始化栈s");s=(SeqStack*)malloc(sizeof(SeqStack));InitStack(s);printf("(2)栈为%s",(StackEmpty(s)?"空":"非空"));printf("(3)输入要进栈的数据个数:");scanf("%d",&n);printf("依次输入进栈的%d个整数:",n);for(i=0;i5、Push(s,x);}printf("(4)栈为%s",(StackEmpty(s)?"空":"非空"));printf("(5)从栈顶到栈底的元素依次为:");DispStack(s);printf("(6)栈底元素为:");DispBottom(s);printf("(7)初始化队列sq");sq=(SeqQueue*)malloc(sizeof(SeqQueue));InitQueue(sq);printf("(8)队列为%s",(QueueEmpty(sq)?"空":"非空"));printf("(9)出栈/入队的元素依次为:");while(!Stack6、Empty(s)){x=Pop(s);printf("%d",x);InQueue(sq,x);}printf("");printf("(10)栈为%s,",(StackEmpty(s)?"空":"非空"));printf("队列为%s",(QueueEmpty(sq)?"空":"非空"));printf("(11)出队/进栈的元素依次为:");while(!QueueEmpty(sq)){x=OutQueue(sq,x);printf("%d",x);Push(s,x);}printf("");printf("(12)栈为%s,",(StackEmpty(s)?7、"空":"非空"));printf("队列为%s",(QueueEmpty(sq)?"空":"非空"));printf("(13)从栈顶到栈底的元素依次为:");DispStack(s);printf("(14)栈底元素为:");DispBottom(s);free(s);free(sq);}voidInitStack(SeqStack*s){s->top=-1;}intStackEmpty(SeqStack*s){if(s->top==-1)return1;elsereturn0;/*否则返回0*
5、Push(s,x);}printf("(4)栈为%s",(StackEmpty(s)?"空":"非空"));printf("(5)从栈顶到栈底的元素依次为:");DispStack(s);printf("(6)栈底元素为:");DispBottom(s);printf("(7)初始化队列sq");sq=(SeqQueue*)malloc(sizeof(SeqQueue));InitQueue(sq);printf("(8)队列为%s",(QueueEmpty(sq)?"空":"非空"));printf("(9)出栈/入队的元素依次为:");while(!Stack
6、Empty(s)){x=Pop(s);printf("%d",x);InQueue(sq,x);}printf("");printf("(10)栈为%s,",(StackEmpty(s)?"空":"非空"));printf("队列为%s",(QueueEmpty(sq)?"空":"非空"));printf("(11)出队/进栈的元素依次为:");while(!QueueEmpty(sq)){x=OutQueue(sq,x);printf("%d",x);Push(s,x);}printf("");printf("(12)栈为%s,",(StackEmpty(s)?
7、"空":"非空"));printf("队列为%s",(QueueEmpty(sq)?"空":"非空"));printf("(13)从栈顶到栈底的元素依次为:");DispStack(s);printf("(14)栈底元素为:");DispBottom(s);free(s);free(sq);}voidInitStack(SeqStack*s){s->top=-1;}intStackEmpty(SeqStack*s){if(s->top==-1)return1;elsereturn0;/*否则返回0*
此文档下载收益归作者所有