欢迎来到天天文库
浏览记录
ID:24043114
大小:191.50 KB
页数:16页
时间:2018-11-12
《实验二 栈、队列的实现与应用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、-实验二栈、队列的实现及应用实验课程名:数据结构与算法专业班级:学号:姓名:实验时间:实验地点:指导教师:冯珊一、实验目的1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际背景下灵活运用。2、掌握栈和队列的特点,即先进后出与先进先出的原则。3、掌握栈和队列的基本操作实现方法。二、实验内容一、实验目的及要求1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际背景下灵活运用。2、掌握栈和队列的特点,即先进后出与先进先出的原则。3、掌握栈和队列的基本操作实现方法。二、实验学时2学时三、实验任务任务一:(1)实现栈的顺序存储(
2、2)实现栈的链式存储。任务二:实现顺序存储的循环队列,完成键盘缓冲区的功能。四、实验重点、难点1.进栈、出栈栈顶指针都要改变。2.队空、队满的条件及入队、出队时指针的变更。五、操作内容与要求1.任务一(1):完成下列程序,该程序实现栈的顺序存储结构,构建顺序栈(栈中的元素依次为R,S,Y,F,C,T),依次进行进栈和出栈操作,判断栈空和栈满操作,返回栈顶元素操作。要求生成顺序栈时,从键盘上读取数据元素。(1)源代码:#include#include#defineSTACK_INIT_SIZE
3、100#defineSTACKINCREMENT10#defineOK1#defineERROR0typedefcharSElemType;/*顺序栈的存储类型*/typedefstruct//definestructureSqStack(){SElemType*base;SElemType*top;intstacksize;}SqStack;----/*构造空顺序栈*/intInitStack(SqStack*S)//InitStack()sub-function{S->base=(SElemType*)malloc(STAC
4、K_INIT_SIZE*sizeof(SElemType));if(!S->base){printf("分配空间失败!");return(ERROR);}S->top=S->base;S->stacksize=STACK_INIT_SIZE;printf("栈初始化成功!");return(OK);}//InitStack()end/*取顺序栈顶元素*/intGetTop(SqStack*S,SElemType*e)//GetTop()sub-function{if(S->top==S->base){printf("栈为
5、空!");//ifemptySqStackreturn(ERROR);}*e=*(S->top-1);return(OK);}//GetTop()end/*将元素压入顺序栈*/intPush(SqStack*S)//Push()sub-function{SElemTypee;if(S->top-S->base>S->stacksize){S->base=(SElemType*)realloc(S->base,(S->stacksize+STACKINCREMENT*sizeof(SElemType)));if(!S->bas
6、e){printf("存储空间分配失败!");return(ERROR);}S->top=S->base+S->stacksize;S->stacksize+=STACKINCREMENT;}fflush(stdin);//清除输入缓冲区,否则原来的输入会默认送给变量x----printf("请输入要入栈的元素的值:");e=getchar();*S->top++=e;return(OK);}//Push()end/*将元素弹出顺序栈*/intPop(SqStack*S,SElemType*e)//Pop()sub-func
7、tion{if(S->top==S->base){printf("栈为空!");return(ERROR);}*e=*--S->top;return(OK);}//Pop()endvoiddisplay(SqStack*s){if(s->top==s->base)printf("栈为空!");else{while(s->top!=s->base){s->top=s->top-1;printf("%c->",*(s->top));}}printf("");}intmain(){intchoice;SElemTypee;
8、SqStacks;do{printf("===============================");printf("0:退出");printf("1:初始化栈");printf("2:入栈");printf("3:出栈");print
此文档下载收益归作者所有