网站大量收购闲置独家精品文档,联系QQ:2885784924

入栈和出栈的所有排列可能性.doc

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

#include stdio.h #include stdlib.h #include bios.h #include string.h #include graphics.h /*定义全局变量*/ int pu=0,po=0,t=0; char tp[130][12]; /*用栈排出入栈出栈的顺序*/ struct train{ ? int numb; ? struct train *next; ? }; struct push{ ? int a; ? int b; ? char data[24]; ? struct push *next; ? }; struct push *creat(struct push *top) { ? top=(struct push *)malloc(sizeof(struct push)); ? top-next=NULL; ? return top; } struct push *pup(struct push *top,int a,int b,int n) { ? struct push *p,*q; ? q=top-next; ? p=(struct push *)malloc(sizeof(struct push)); ? p-a=a; ? p-b=b; ? if(q) ??? strcpy(p-data,q-data); ? if(q-an||!q) ?? { ??? p-data[a+b-1]=r; ??? p-data[a+b]=\0; ?? } ? else ?? { ???? p-data[a+b-1]=c; ???? p-data[a+b]=\0; ?? } ? p-next=top-next; ? top-next=p; return top; } struct push *pop(struct push *top) { ? top=top-next; ? return top; } struct push *apaili(struct push *top,int numb)? /*向后移动一个出命令*/ { ? struct push *q; ? q=top-next; ? if(punumb) ?? { ???? pu++; ???? top=pup(top,pu,po,numb); ???? top=apaili(top,numb); ??? } ?? if(ponumb) ??? { ????? po++; ????? top=pup(top,pu,po,numb); ????? top=apaili(top,numb); ???? } ???? return top; } struct push *bpaili(struct push *top,int numb) /*移动第一个出命令到最后*/ { ? int a,b,cir; ? char x[22]; ? struct push *p; ???? do{ ? p=top-next; ? p=p-next; ? a=p-a; ? b=p-b; ? if(p-data[a+b-1]==r) ? break; ? else ? { ? do{ ????? top=pop(top); ????? p=top-next; ????? a=p-a; ????? b=p-b; ??? }while(p-data[a+b-1]==c); ? if(a==1) ??? { ????? cir=1; ????? break; ????? } ? top=pop(top); ? a--; ? b++; ? top=pup(top,a,b,numb); ? top-next-data[a+b-1]=c; ? pu=a; ? po=b; ? top=apaili(top,numb); ? strcpy(x,top-next-data); ? if(jc(x)) ? { ??? strcpy(tp[t],x); ??? t++; ? } ? } ???? }while(a+b2*numb); ???? if(cir==1) ???? return top; ???? top=pop(top); ???? top=bpaili(top,numb); } int jc(char c[22]) { ? int i=0,k=0; ? if(c[i]!=0) ? do{ ???? if(c[i]==r) ???? k++; ???? if(c[i]==c) ???? k--; ???? if(k0) ???? return 0; ???? i++; ???? }while(c[i]!=\0); ???? return 1; } /*调用

文档评论(0)

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

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

1亿VIP精品文档

相关文档