欢迎来到天天文库
浏览记录
ID:35627053
大小:140.50 KB
页数:13页
时间:2019-04-03
《算法与数据结构课程设计--栈的应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、栈的应用1、表达式求值#include"stdlib.h"#include"stdio.h"#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2#defineNULL0#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT10typedefintStatus;/*定义顺栈类型*/typedefcharSElemType1;typedefstruct{SElemType1*base;SElemTyp
2、e1*top;intStackSize;}SqStack;/*初始化顺栈*/StatusInitStack1(SqStack*S){(*S).base=(SElemType1*)malloc(STACK_INIT_SIZE*sizeof(SElemType1));if(!(*S).base)exit(OVERFLOW);(*S).top=(*S).base;(*S).StackSize=STACK_INIT_SIZE;returnOK;}/*清空顺栈*/voidClearStack1(SqStack*S){(*S).top=(*S).base;}/
3、*判断顺栈是否为空*/StatusStackEmpty1(SqStackS){if(S.top==S.base)wilyes11收集博客(与学习无关):http://blog.sina.com.cn/u/1810231802returnTRUE;elsereturnFALSE;}/*求顺栈长度*/intStackLength1(SqStackS){returnS.top-S.base;}/*取顺栈的栈顶元素(注意:形参表与课本有差别)*/SElemType1GetTop1(SqStackS){if(S.top==S.base)returnERROR
4、;return*(S.top-1);}/*入顺栈*/StatusPush1(SqStack*S,SElemType1e){if((*S).top-(*S).base>=(*S).StackSize){(*S).base=(SElemType1*)realloc((*S).base,((*S).StackSize+STACKINCREMENT)*sizeof(SElemType1));if(!(*S).base)exit(OVERFLOW);(*S).top=(*S).base+(*S).StackSize;(*S).StackSize+=STACK
5、INCREMENT;}*((*S).top)=e;(*S).top++;returnOK;}/*出顺栈*/StatusPop1(SqStack*S,SElemType1*e){if((*S).top==(*S).base)returnERROR;(*S).top--;*e=*((*S).top);returnOK;}/*定义链栈类型*/typedefintSElemType2;typedefstructSNode{SElemType2data;wilyes11收集博客(与学习无关):http://blog.sina.com.cn/u/1810231
6、802structSNode*next;}SNode,*SLinkStack;/*B2、初始化链栈*/StatusInitStack2(SLinkStack*S){(*S)=(SLinkStack)malloc(sizeof(SNode));if(!(*S))exit(OVERFLOW);(*S)->next=NULL;returnOK;}/*判断顺栈是否为空*/StatusStackEmpty2(SLinkStackS){if(!(S->next))returnTRUE;elsereturnFALSE;}/*取顺栈的栈顶元素*/SElemType
7、2GetTop2(SLinkStackS){if(StackEmpty2(S))returnERROR;returnS->next->data;}/*入链栈*/StatusPush2(SLinkStack*S,SElemType2e){SLinkStackp;p=(SLinkStack)malloc(sizeof(SNode));if(!p)exit(OVERFLOW);p->data=e;p->next=(*S)->next;(*S)->next=p;returnOK;}/*出链栈*/StatusPop2(SLinkStack*S,SElemTy
8、pe2*e){SLinkStackp;wilyes11收集博客(与学习无关):http://blog.sina.com.c
此文档下载收益归作者所有