金陵科技学院实验报告
{char st[maxsize]; int top=-1,i=0,tag=1; while(i {if(exp[i]=='('||exp[i]=='['||exp[i]=='{') { top++; st[top]=exp[i]; } if(exp[i]==')') if(st[top]=='(') top--; else tag=0; if(exp[i]==']') if(st[top]=='[') top--; else tag=0; if(exp[i]=='}') if(st[top]=='{') top--; else tag=0; i++; } if(top>=0) tag=0; return tag; } main() {int tag,i; char exp[7]={100}; printf(\请输入一个算式表达式:\\n\ for(i=0;i<7;i++) exp[i]=getchar(); tag=match(exp,7); if(tag) 金陵科技学院实验报告 printf(\算式表达式中的开括号和闭括号配对。\ else printf(\算式表达式中的开括号和闭括号不配对!\getchar(); getchar(); } (2)#include #define N 64 typedef struct node { int data[N]; char naem; int top; }sqstack; void SETNULL(sqstack *q) { q->top=-1; } int PUSH(sqstack *q,int x) { if(q->top==N-1) return 0; q->top++; q->data[q->top]=x; return 1; } int POP(sqstack *q,int *x) { if(q->top==-1) 金陵科技学院实验报告 return 0; (*x)=q->data[q->top]; q->top--; return 1; } void MOVE(sqstack *x,sqstack *y) { int l; POP(x,&l); printf(\环-->%c柱子\ PUSH(y,l); } int HANOI(int n,sqstack *a,sqstack *b,sqstack *c) { static int i=0; if(n==1) { MOVE(a,c); i++; } else { HANOI(n-1,a,c,b); MOVE(a,c); i++; HANOI(n-1,b,a,c); } return i; } int main() 金陵科技学院实验报告 { int m,t,k; sqstack A,B,C; SETNULL(&A); SETNULL(&B); SETNULL(&C); A.naem='A'; B.naem='B'; C.naem='C'; printf(\请输入汉诺塔中圆环的数目:\ scanf(\ for(t=m;t>0;t--) PUSH(&A,t); printf(\假设有三根柱子A、B、C,开始时A柱子上有1~%d环,并且它们是按照从小到大的顺序放在A柱子上的,按照汉诺塔规则,将A柱子上所有环通过B柱子,移动到C柱子的则移动方法为:\\n\\n\ k=HANOI(m,&A,&B,&C); printf(\总共需要移动的次数为:%d次\\n\ return 0; } (3)#include #include char ch; struct dnode *prior,*next; }linklist; typedef struct {
相关推荐: