《算法与数据结构》实验报告实验3__栈与队列的应用

上传人:jiups****uk12 文档编号:40023907 上传时间:2018-05-22 格式:DOC 页数:9 大小:51.50KB
返回 下载 相关 举报
《算法与数据结构》实验报告实验3__栈与队列的应用_第1页
第1页 / 共9页
《算法与数据结构》实验报告实验3__栈与队列的应用_第2页
第2页 / 共9页
《算法与数据结构》实验报告实验3__栈与队列的应用_第3页
第3页 / 共9页
《算法与数据结构》实验报告实验3__栈与队列的应用_第4页
第4页 / 共9页
《算法与数据结构》实验报告实验3__栈与队列的应用_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《《算法与数据结构》实验报告实验3__栈与队列的应用》由会员分享,可在线阅读,更多相关《《算法与数据结构》实验报告实验3__栈与队列的应用(9页珍藏版)》请在金锄头文库上搜索。

1、算法与数据结构算法与数据结构实验报告实验报告姓名姓名 学号学号 专业班级专业班级计算机类 1301指导教师指导教师实验名称实验名称实验 3 栈与队列的应用实验目的实验目的了解并掌握栈与队列的概念与定义 能够实现并运用栈与队列 熟练运用栈与队列的基本操作 使用栈实现回溯算法实验环境实验环境个人计算机一台,CPU 主频 1GHz 以上,1GB 以上内存,2GB 以上硬 盘剩余空间。 Windows2000、Windows XP 或 Win 7 操作系统 Code:Blocks(版本 12.11 或近似版本,英文版),或 VC+ 6.0实验内容实验内容1 基本部分(必做)1链式栈的创建与操作 设链式

2、栈中元素的数据类型为整型,编写函数实现以下操作: (1)链式栈的初始化 (2)链式栈的输出(从栈顶到栈底) (3)链式栈的判空操作 (4)链式栈入栈操作 (5)链式栈的出栈操作 (6)取栈顶元素的值 注:链式栈可不带头节点 源代码:源代码:ds6.c 2循环队列的创建与操作 设循环队列中元素的数据类型为整型,编写函数实现以下操作: (1)循环队列的初始化 (2)循环队列的入栈 (3)循环队列的出栈 (4)取循环队列的栈顶元素 (5)循环队列的输出(从栈顶到栈底) 源代码:源代码:ds7.c 3符号平衡问题在语言中往往需要判断一些符号是否是成对出现的,比如、()。如何 让判断符号的对称也是很多语

3、言的语法检查的首要任务。 设计一个函数来检查表达式中的符号()、是否平衡。若平衡,返回 1;若不平衡返回 0。 例如: a(dda)dfsafddfsd(fdsd)dfd)dfd是符号平衡的。 adx(df)ds)不是符号平衡的。 源代码:源代码:ds8.c实验代码 :1.#include #define MAXSIZE maxlen typedef int elemtype; typedef struct stacknode elemtype data;struct stacknode *next; StackNode; typedef struct StackNode *top; Link

4、Stack; int *InitStack(LinkStack *S);/初始化链式栈 int *Push(LinkStack *S);/入栈函数 int *view(LinkStack *S);/输出函数 int *Pop(LinkStack *S);/出栈函数 int StackTop(LinkStack *S);/取栈顶函数main() LinkStack *S;int a;char k;S=InitStack(S);if(S-top=NULL)printf(“该链式栈为空!“);Push(S);printf(“按任意键开始出栈!“);getchar();getchar();Pop(S)

5、;a=StackTop(S);printf(“栈顶元素为 %d“,a);printf(“程序运行完毕,是否重新运行(y/n):“);scanf(“%s“,if(k=y)main(); int *InitStack(LinkStack *S) S=(LinkStack*)malloc(sizeof(LinkStack);S-top=NULL;return(S); int *Push(LinkStack *S) int n,i,item;StackNode *p;printf(“请输入即将入栈的数据个数:“);scanf(“%d“,for(i=0;idata=item;p-next=NULL;p-

6、next=S-top;S-top=p;view(S);return(S); int *view(LinkStack *S) StackNode *p;if(S-top=NULL)printf(“链式栈为空!“);return(0);else printf(“该链式栈从栈顶到栈底数据如下:n“);for(p=S-top;p!=NULL;p=p-next)printf(“%dn“,p-data);int *Pop(LinkStack *S) StackNode *p;int item;char k;p=S-top;if(S-top=NULL)printf(“链式栈为空!“);return(0);e

7、lseitem=p-data;printf(“出栈数据为%dn“,item);S-top=p-next;free(p);view(S);printf(“是否继续出栈(y/n):“);scanf(“%s“,if(k=y)Pop(S);else return(S); int StackTop(LinkStack *S) if(S-top=NULL)printf(“该链式栈为空!“);return(S-top-data); 2.#include #define MAXSIZE 30 typedef int elemtype; typedef struct elemtype dataMAXSIZE;i

8、nt front,rear; seqqueue; int a=0;/全局变量 int InitQueue(seqqueue *Q);/初始化队列函数 int view(seqqueue *Q);/输出函数 int EnQueue(seqqueue *Q);/入队函数 int DeQueue(seqqueue *Q);/出队函数main() seqqueue *Q;Q=InitQueue(Q);if(Q-front=Q-rear)printf(“该队列为空!“);EnQueue(Q);printf(“按任意键开始出栈!“);getchar();getchar();DeQueue(Q);print

9、f(“程序运行完毕,是否重新运行(y/n):“);int InitQueue(seqqueue *Q) Q=(seqqueue*)malloc(sizeof(seqqueue);Q-front=Q-rear=0;return(Q); int EnQueue(seqqueue *Q) int n,i,item;printf(“请输入即将入队的数据个数:“);scanf(“%d“,if(aMAXSIZE)printf(“该队列已满!“);return(0);else for(i=0;idataQ-rear=item;Q-rear=(Q-rear+1)%MAXSIZE;a+;view(Q);retu

10、rn(Q); int view(seqqueue *Q) seqqueue *r;int i,j;if(a=0)printf(“该队列为空!“);return(0);else printf(“该队列从栈顶到栈底数据如下:n“);for(i=0,j=Q-front;idataj);return(Q); int DeQueue(seqqueue *Q) elemtype item;char k;if(a=0)printf(“该队列为空!“);return(0);elseitem=Q-dataQ-front;Q-front=(Q-front+1)%MAXSIZE;printf(“出队数据为%dn“,

11、item);a-;view(Q);printf(“是否继续出栈(y/n):“);scanf(“%s“,if(k=y)DeQueue(Q);else return(Q); 3#include “stdio.h“ #include “stdlib.h“ #define MAXSIZE 100 typedef struct char dataMAXSIZE;int top; stack;stack *InitStack(stack *s) s=(stack *)malloc(sizeof(stack);s-top=-1;return s; int f(stack *s) int i=0,flag=1

12、;char strMAXSIZE;printf(“请输入表达式:“);scanf(“%s“,str);for(i=0;stri!=0;i+)if(stri=(|stri=|stri=)s-top+;s-datas-top=stri;if(stri=)|stri=|stri=)if(s-top=0)if(s-datas-top=stri) s-top-;elseflag=0;break;elseflag=0;break;if(s-top!=-1)flag=0;return flag; int main() int n;stack *s;s=InitStack(s);n=f(s);if(n=1) printf(“表达式中符号平衡n“);else printf(“表达式中符号 0 平衡n“); 使用以上操作,即可完成题目要求。总结与思考总结与思考感觉越来越难了,靠自己的力量完全完成很难,自己写出来的程序运行不下去。希望感觉越来越难了,靠自己的力量完全完成很难,自己写出来的程序运行不下去。希望 我转专业成功,但依旧会努力。谢谢老师!干吧得我转专业成功,但依旧会努力。谢谢老师!干吧得教师评定教师评定

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号