栈与队列操作的实现完整版-数据结构版

栈与队列操作的实现完整版-数据结构版

ID:6791398

大小:54.00 KB

页数:14页

时间:2018-01-25

栈与队列操作的实现完整版-数据结构版_第1页
栈与队列操作的实现完整版-数据结构版_第2页
栈与队列操作的实现完整版-数据结构版_第3页
栈与队列操作的实现完整版-数据结构版_第4页
栈与队列操作的实现完整版-数据结构版_第5页
资源描述:

《栈与队列操作的实现完整版-数据结构版》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、#include"stdio.h"#include"stdlib.h"#include"string.h"typedefintStatus;//定义函数类型为int型#defineOK1//定义OK为1#defineERROR0//定义ERROR为0/**********************************************************************************************************栈的顺序式存储**********************************/ty

2、pedefcharSElemType[20];//定义SElemType类型为char型数组#defineSTACK_INIT_SIZE100//栈的存储空间初始分配量#defineSTACKINCREMENT10//栈的存储空间分配增量typedefstruct{SElemType*base;//在栈构造之前和销毁之后,base的值为NULLSElemType*top;//栈顶指针intstacksize;//当前已分配的储存空间,以元素为单位}SqStack;StatusInitStack(SqStack&S){//构造一个空战S.base=

3、(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!S.base){printf("储存分配失败!");exit(ERROR);}S.top=S.base;S.stacksize=STACK_INIT_SIZE;printf("t建栈成功!");returnOK;}//InitStackStatusStackLength(SqStackS){//返回S的元素个数returnS.top-S.base;}//StackLengthStatusStackTravers

4、e(SqStackS){//若栈不为空,输出栈中的所有元素if(S.top==S.base){printf("栈目前为空!");returnERROR;}printf("栈中目前的数据如下所示:");printf("ttop->");while(S.top!=S.base){S.top--;if(S.top==S.base){printf("t%-7s%s","base->",*S.top);}else{printf("t%7s%s","",*S.top);}}returnOK;}//StackTraverseS

5、tatusPush(SqStack&S,SElemTypee){//插入元素e为新的栈顶元素charstr[10];//中间变量while(strcmp(str,"n")!=0){//用作连续入栈if(S.top-S.base>=S.stacksize){//栈满,追加储存空间S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));if(!S.base){printf("储存分配失败!");exit(ERROR);}S.top=S.

6、base+S.stacksize;//改变栈顶S.stacksize+=STACKINCREMENT;//当前已分配的储存空间增加}printf("请输入元素:");scanf("%s",e);strcpy(*S.top++,e);//将新的元素赋给栈顶,栈顶上移printf("入栈成功");printf("继续入栈/退出:y/n:");while(1){//选择是否继续入栈,若否,则入栈结束scanf("%s",str);if(strcmp(str,"y")==0

7、

8、strcmp(str,"n")==0){break;}else{pri

9、ntf("选择错误,请重新选择:");}}}returnOK;}//PushStatusPop(SqStack&S,SElemType&e){//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERRORif(S.top==S.base){printf("It'sEmpty!");returnERROR;}strcpy(e,*--S.top);printf("出栈成功");printf("出栈元素为:%s",e);returnOK;}//PopStatusClearStack(SqStack&S){//把S置为

10、空栈,让栈顶和栈底相等,当前已分配的储存空间等于初始储存空间S.top=S.base;S.stacksize=STACK_INIT_SI

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。