欢迎来到天天文库
浏览记录
ID:47204126
大小:59.03 KB
页数:8页
时间:2019-08-26
《《算法与数据结构》实验报告实验3__栈与队列的应用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《算法与数据结构》实验报告姓名学号专业班级计算机类1301指导教师实验名称实验3栈与队列的应用实验目的•了解并掌握栈与队列的概念与定义•能够实现并运用栈与队列•熟练运用栈与队列的基木操作•使用栈实现回溯算法实验环境•个人计算机一台,CPU主频1GHz以上,1GB以上内存,2GB以上硬盘剩余空间。•Windows2000>WindowsXP或Win7操作系统•Code::Blocks(版木12.11或近似版本,英文版),或VC++6.0实验内容1…一基本部分(妙徴)1.链式栈的创建与操作设链式栈屮元素
2、的数据类型为整型,编写函数实现以下操作:(1)链式栈的初始化(2)链式栈的输出(从栈顶到栈底)(3)链式栈的判空操作(4)链式栈入栈操作(5)链式栈的出栈操作(6)取栈顶元素的值注:链式栈可不带头节点源代码:ds6.c2.循环队列的创建与操作设循环队列屮元素的数据类型为整型,编写函数实现以下操作:(1)循环队列的初始化(2)循环队列的入栈(3)循环队列的出栈(4)取循环队列的栈顶元素(5)循环队列的输出(从栈顶到栈底)源代码:ds7.c3・符号平衡问题在语言中往往需要判断一些符号是否是成对出现的,比
3、如{}、[]、()。如何让判断符号的对称也是很多语言的语法检查的首要任务。设计一个函数来检查表达式屮的符号()、[]、{}是否平衡。若平衡,返回1;若不平衡返回0。例如:a(dda){[dfsafd[dfsd]](((fdsd)dfd))dfd}是符号平衡的。{ad[x(df)ds)]}不是符号平衡的o源代码:ds8.c实验代码:1.#include#defineMAXSIZEmaxlentypedefintelemtype;typedefstructstacknode{elemt
4、ypedata;structstacknode*next;JStackNode;typedefstruct{StackNode*top;}LinkStack;int*InitStack(LinkStack*S);〃初始化链式栈int*Push(LinkStack*S);〃入栈函数int*view(LinkStack*S);〃输出函数int*Pop(LinkStack*S);〃出栈函数intStackTop(LinkStack*S);〃取栈顶函数main(){LinkStack*S;inta;char
5、k;S=InitStack(S);if(S->top==NULL)printf(“该链式栈为空!”);Push(S);printfC*按任意键开始出栈!”);getchar();getchar();Pop(S);a=StackTop(S);printfC栈顶元素为%d”,a);printfC*程序运行完毕,是否重新运行(y/n):”);scanf("%s",&k);if(k==,y,){main();}}int*InitStack(LinkStack*S){S=(LinkStack*)malloc(
6、sizeof(LinkStack));S->top=NULL;return(S);}int*Push(LinkStack*S){intn,i,item;StackNode*p;printfC*请输入即将入栈的数据个数:”);scanf("%d",&n);for(i=0;idata=item;p->next=NULL;
7、p->next=S->top;S->top=p;}view(S);return(S);}int*view(LinkStack*S)StackNode*p;if(S->top==NULL){printfC链式栈为空!”);return(O);}elseprintf(n该链式栈从栈顶到栈底数据如H:");for(p=S->top;p!=NULL;p=p->next){printf("%d",p->data);}}int*Pop(LinkStack*S){StackNode*p;intitem;c
8、hark;p=S->top;if(S->top==NULL){printf(“链式栈为空!”);return(O);}else{item=p・>data;printf(H出栈数据为%dH,item);S->top=p->next;free(p);view(S);}printfC'是否继续出栈(y/n):n);scanf("%s”,&k);if(k==y){Pop(S);}elsereturn(S);}intStackTop(LinkStack*S)if(S->to
此文档下载收益归作者所有