第三章+栈和队列题材.ppt

  1. 1、本文档共129页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
栈 队列 递归;栈 ( Stack );栈的主要操作;栈的表示和实现;top;顺序栈的类型表示:;判栈空 int StackEmpty (SeqStack *S) { if( S-top == S-base ) return 1 //判栈空,空则返回1 else return 0; //否则返回0 } 判栈满 int StackFull (SeqStack *S) { if( S-top- S-base = S- StackSize ) return 1 //判栈满,满则返回1 else return 0; //否则返回0 };初始化 void InitStack ( SeqStack *S) { //置空栈 S-base =( StackData *)malloc(STACK_INIT_SIZE * sizeof(StackData)); if (!S-base) exit(OVERFLOW); S-top = S-base ; S-stacksize= STACK_INIT_SIZE ; Return ok; } ;入栈 int Push (SeqStack *S, StackData x) { //插入元素x为新的栈顶元素 if ( StackFull (S) ){ S-base =( StackData *)realloc(S-base , (S-stacksize+ STACKINCREMENT) * sizeof(StackData)); if(! S-base)exit(overflow); S-top= S-base + S-stacksize; S-stacksize+= STACKINCREMENT; //追加存储空间 } *(S-top)=x; (S-top)++; Return ok };取栈顶元素 int GetTop (SeqStack *S, StackData x) { //若栈空返回0, 否则栈顶元素读到x并返回1 if ( StackEmpty(S) ) return 0; x = *(S-top-1); return 1; } ;出栈 int Pop (SeqStack *S, StackData x) { //若栈空返回0, 否则栈顶元素退出到x并返回1 if ( StackEmpty(S) ) return 0; --(S-top); x = *(S-top); return 1; } ;链式栈:栈的链接表示 ;链式栈 (LinkStack)的定义;链式栈操作实现;判栈空 int StackEmpty (LinkStack *S) { return S-top == NULL; } 出栈 int Pop ( LinkStack *S, StackData x ) { if ( StackEmpty (S) ) return 0; StackNode * p = S-top; S-top = p-link; x = p-data; free (p); return 1; } ;取栈顶 int GetTop ( LinkStack *S, StackData x ) { if ( StackEmpty (S) ) return 0; x = S-top-data; return 1; } 置栈空 int MakeEmpty ( LinkStack *S) { While(S-top!=NULL){ StackNode * p = S-top; S-top = S-top -link; free(p); } };程序中定义多个栈;(2)共享进栈算法 void push1(int x) {if (top1top2) printf(“overflow”); else {stack[top1]=x;top1++;}} void push2(int x) {if(top1top2) printf(“overflow”); else {stack[top2]=x;top2--;};(3)共享出栈算法 int pop1() {if top1==0){printf(“underflow”);return(NULL);} top1--;return(stack[top1]);} int pop2() {if(top2==MAX-1) {printf(“underflow”);return(NULL):}

文档评论(0)

1112111 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档