栈的源代码分析和总结.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

栈的源代码.txt11生命是盛开的花朵,它绽放得美丽,舒展,绚丽多资;生命是精美的小诗,清新流畅,意蕴悠长;生命是优美的乐曲,音律和谐,宛转悠扬;生命是流淌的江河,奔流不息,滚滚向前#includestdafx.h

#includeiostream

usingnamespacestd;

#define

true1

#define

false0

#define

#define

ok1

error0

#define

overflow

-2

#define STACK_INIT_SIZE100

#define STACKINCERMENT10

typedef intstatus;typedef intoperandtype;typedef charoperatortype;typedef structsqstack{

int*base;int*top;

intstacksize;

}sqstack;

chara[8][8]={

{\0,+,-,*,/,(,),#},

{+,,,,,,,},

{-,,,,,,,},

{*,,,,,,,},

{/,,,,,,,},

{(,,,,,,=,\0},

{),,,,,\0,,},

{#,,,,,,\0,=}};

statusin(charc) //判断c是否运算符函数

{ if(c0||c9)

returntrue;

else

returnfalse;

}

statusinitstack(sqstacks) //初始化栈函数

{ s.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));if(!s.base) exit(overflow);

s.top=s.base;s.stacksize=STACK_INIT_SIZE;returnok;

}

statusgettop(sqstacks,inte) //取栈顶元素函数

{ if(s.top==s.base)

returnerror;e=*(s.top-1);returnok;

}

statuspush(sqstacks,inte) //压栈函数

{ if(s.top-s.base=s.stacksize){

s.base=(int*)realloc(s.base,(s.stacksize+STACKINCERMENT)*sizeof(int));if(!s.base)exit(overflow);

s.top=s.base+s.stacksize;s.stacksize+=STACKINCERMENT;

}

*s.top++=e;returnok;

}

statuspop(sqstacks,inte) //出栈函数

{ if(s.top==s.base)

returnerror;e=*--s.top;returnok;

}

operatortypeprecede(operatortypec1,operatortypec2) //判断两个运算符优先级函数

{ inti,j;

for(i=0;i8a[i][0]!=c1;i++); //从第列查找操作符c1if(i=8){

printf(Operatorerror!/n);exit(error);

}

for(j=0;j8a[0][j]!=c2;j++); //从第行查找操作符c2if(j=8){

printf(Operatorerror!/n);exit(error);

}

returna[i][j];

}

statusstackempty(sqstacks) //判断栈是否为空函数

{ if(s.base==s.top)

returntrue;

else

returnfalse;

}

statuscheck(char*str) //查看表达式括号是否匹配函数

{

inti=0,e;

sqstacks;initstack(s);

while(str[i]!=#)

{ switch(str[i]){

case(:push(s,str[i]);

break;

case[:push(s,str[i]);

case):if(pop(s,e))

break;

{ if(e==()

break;else

returnerror;

}

else returnerror;case]:if(pop(s,e))

{ if(e==[)

break;else

returnerror;

}i++;

}

}

else returnerror;

if(stackempty(s))return

文档评论(0)

tianya189 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档