该算法虽然直观有效但没有给出具体的实现为了比较三种算法的优劣文中基于该算法思想给出了具体的实现源程序如下 char sz[][]; //存储出栈序列 int used; //出栈序列总数 void stack_out (char s) {char buff[]chstep[]*p*ql*q; int lenijnumnumnum; strcpy (buffs); len strlen(buff); if(len>) {ch=buff [len]; buff [en]=; stack_out(buff); num=used*(en<<)*( (en <<) )/len/(en+); //当n=len时的出栈序列数 numl=num; for(i=used;i >=;i ) //在nl的基础上求出n的所有出栈序列 {strcpy(stepsz[i]); p=strchr(stepbuff[en]); for(num=j=num;j>=;j) {ql=sz[j];q=step; while(*q!=p )*q++=*q++; *q++=ch; while(*q!= )*q++=*q++; *ql=;num++; if(*p++=NULL) break; } num=numl; } used=numl; } else {sz[][]=buff[];sz[][]=; used=; //当n =时出栈序列数为 } } [] [] [] [] [] [] [] [] |