10 65
865
9761059 95 97.6
()
a1
a2
….
an
a1
a2
….
an
1,2.
3,4.
Sstacksize=4 top=0
10
S[4]
2
3
1
0 base
s[top]=x
top=top+1
top
10
25
30
S[4]
2
3
1
0
top
base
top=top-1
x=s[top]
10
30
S[4]
2
3
1
0
Top=0
top
top=stacksize
10
25
30
40
S[4]
2
3
1
0
top=4
base
2.3.1.2
a2
a1
top
(1)
top
·
#define statcksize 100
int push(int s[ ],int x,int *ptop)
{
int top;
top=*ptop;
if(top= =stacksize)
{printf(“overflow”); return (0); }
else { s[top]=x;
*ptop=++top; /*1 */
return (1) ; }
}
ptop
a2
a3
a4
9
8
7
6
5
4
3
2
1
a10
top
int pop(int s[ ],int *ptop,int *py)
{
int top;
top=*ptop;
if(top= =0)
{ printf(“stack empty”); return( 0); }
else { - -top;
*py=s[top]; /**/
*ptop=top;
return(1);
}
}
ptop
py
s
a2
a3
a4
9
8
7
6
5
4
3
2
1
a10
top
xtop
2
Typedef struct lnode{
int data
struct lnode?next
}lnode?Lstack
int lpush(Lstack s,int e)
{
p=(Lstack)malloc(sizeof(lnode));
p->data=e;
p->next=s;
s=p;
return (1);
}
base
S
s
e
int lpush(Lstack s,int e)
{
p=(Lstack)malloc(sizeof(lnode));
p->data=e;
p->next=s;
s=p;
return (1);
}
P
base
S
int lpush(Lstack s,int e)
{
p=(Lstack)malloc(sizeof(lnode));
p->data=e;
p->next=s;
s=p;
return (1);
}
P
base
S
e
int lpush(Lstack s,int e)
{
p=(Lstack)malloc(sizeof(lnode));
p->data=e;
p->next=s;
s=p;
return (1);
}
P
base
S
e
int lpush(Lstack s,int e)
{
p=(Lstack)malloc(sizeof(lnode));
p->data=e;
p->next=s;
s=p;
return (1);
}
P
base
S
S e
r
s
rr
r
s
1
r
s
t
2
r
s
t 3
2.3.1.3
(1)
(2)
1 (n=0,1)
n! =
n(n-1) (n>1)
1,
int f(x)
int x;
{ int y,z;
…..
z=f(x);
……
return (2*z);
}
f
f
int f1(x)
int x;
{ int y,z;
…..
z=f2( y);
……
return (2*z); }
int f2(t)
int t;
{ int a,c;
…..
c=f1(a);
……
return (3+c); }
f 1
f2
f 2
f1
float fac ( int n)
{
float f;
if(n<0) printf(“n<0,data error!\n”);
else if(n= =0||n= =1) f=1;
else f=fac(n-1)* n ;
return f;
}
n!
4
fac(4)=4*fac(3)
fac(3)=3*fac( 2)
fac(2)=2*fac( 1)
fac(1)=1
fac(4)=4*3*2*1
fac(2)=2*1
fac(3)=3*2*1
(1)f(4);
……
4
f (4);
1n=4
top
(2) s=4*f(3)
n
3
f (3);
2n=3
1n=4
top
(3) s=3*f(2)
n 2
f (2);
3n=2
2n=3
1n=4
top
(4)s=2*f(1)
n
1
4n=1
3n=2
2n=3
1n=4
top
s
s=3*2*1;
(2) 3
(1) 4
s 1
(3) 2
(2) 3
(1) 4
top
s=4*3*2*1
(1 ) 4
(3) 2
(2) 3
(1) 4
(4) 1
24
** / * + -
A*B + C\D
4 3 3 2 2 1 1 0
3
A B C D
A*B + C/D;
top2
top1;
(a)
OSNS
B
A
*;
(b)
NS OS
T1 ;
(c)
T1=A*B
NS OS
D
C
T1
/
+;
(d)
NS OS
(g)
NS OS
T2=C/D
T2
T1
+;
(e)
NS OS
T3 ;
(f)
T3=T2+T1
NS OS
NS
1.
2.
3.
4
0 1 1 1 1 1 0
1 0 0 0 0 1 0
1 0 0 1 1 0 0
1 0 1 0 1 1 0
1 0 1 1 0 1 0
1 1 0 1 1 0 0
0 0 0 0 0 0 0
R [ 1,7,1,7 ]
1 2 3 4 5 6 7
1
2
3
4
5
6
7
Void mapcolor(int R[][],int n,int s[])
{
s[1]=1; // 11
I=2; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( K<I)&&(s[K]?R[I,K]!=J))
K=K+1; //
IF (K<I)
THEN J=J+1
ELSE{ s[I]=J; I=I+1; J=1; }
}
IF (J>4) THEN { I=I-1; J=s[I]+1
}
}
(1)(2)
(4)
(5)
(6)
(7)
(3)
1#
2#
3#
4#
1 2 3 2
1 2 3
1 2 2 4 3
1 2 3 2 4 3
1 2 3 2 4
1 2 3 2 4 3 1
1 2 2 3 4
1 2 3 4 5 6 7
S [ 1,7 ]
Void mapcolor(int R[][],int n,int s[])
{ s[1]=1; // 11
I=2; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
1
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ s[1]=1; // 11
I=2; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0 1 1 1 1 1 0
1 0 0 0 0 1 0
1 0 0 1 1 0 0
1 0 1 0 1 1 0
1 0 1 1 0 1 0
1 1 0 1 1 0 0
0 0 0 0 0 0 0
1 2 3 4 5 6 7
1
2
3
4
5
6
7
1
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ s[1]=1; // 11
I=2; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1=2
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0 1 1 1 1 1 0
1 0 0 0 0 1 0
1 0 0 1 1 0 0
1 0 1 0 1 1 0
1 0 1 1 0 1 0
1 1 0 1 1 0 0
0 0 0 0 0 0 0
1 2 3 4 5 6 7
1
2
3
4
5
6
7
1
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ s[1]=1; // 11
I=2; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1=2; //
IF (K<I) //
THEN J=J+1=2
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0 1 1 1 1 1 0
1 0 0 0 0 1 0
1 0 0 1 1 0 0
1 0 1 0 1 1 0
1 0 1 1 0 1 0
1 1 0 1 1 0 0
0 0 0 0 0 0 0
1 2 3 4 5 6 7
1
2
3
4
5
6
7
1
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ s[1]=1; // 11
I=2; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1=2; //
IF (K<I) //
THEN J=J+1=2
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
1
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=2; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0 1 1 1 1 1 0
1 0 0 0 0 1 0
1 0 0 1 1 0 0
1 0 1 0 1 1 0
1 0 1 1 0 1 0
1 1 0 1 1 0 0
0 0 0 0 0 0 0
1 2 3 4 5 6 7
1
2
3
4
5
6
7
1 2 2 3 4
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{k= 1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1;//
IF (K<I) //
THEN J=J+1=2
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1;=2 //
IF (K<I) //
THEN J=J+1=2
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0 1 1 1 1 1 0
1 0 0 0 0 1 0
1 0 0 1 1 0 0
1 0 1 0 1 1 0
1 0 1 1 0 1 0
1 1 0 1 1 0 0
0 0 0 0 0 0 0
1 2 3 4 5 6 7
1
2
3
4
5
6
7
1 2 2 3 4
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1;=2 //
IF (K<I) //
THEN J=J+1=3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1=3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0 1 1 1 1 1 0
1 0 0 0 0 1 0
1 0 0 1 1 0 0
1 0 1 0 1 1 0
1 0 1 1 0 1 0
1 1 0 1 1 0 0
0 0 0 0 0 0 0
1 2 3 4 5 6 7
1
2
3
4
5
6
7
1 2 2 3 4
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1;=2 //
IF (K<I) //
THEN J=J+1=3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1;=3 //
IF (K<I) //
THEN J=J+1=3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1;=4 //
IF (K<I) //
THEN J=J+1=3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1=4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1;=2 //
IF (K<I) //
THEN J=J+1=4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1;=3 //
IF (K<I) //
THEN J=J+1=4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1;=4 //
IF (K<I) //
THEN J=J+1=4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1;=5 //
IF (K<I) //
THEN J=J+1=4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1=5
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1=5
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
44221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1=4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =2 //
IF (K<I) //
THEN J=J+1=4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =3 //
IF (K<I) //
THEN J=J+1=4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =4 //
IF (K<I) //
THEN J=J+1=4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =5 //
IF (K<I) //
THEN J=J+1=5
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =5 //
IF (K<I) //
THEN J=J+1=5
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =5 //
IF (K<I) //
THEN J=J+1=4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1=4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =2 //
IF (K<I) //
THEN J=J+1=4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =3 //
IF (K<I) //
THEN J=J+1=4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =4 //
IF (K<I) //
THEN J=J+1=4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
43221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =4 //
IF (K<I) //
THEN J=J+1=4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
44221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =4 //
IF (K<I) //
THEN J=J+1=4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
44221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1=1
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
44221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1=2
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
44221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =2 //
IF (K<I) //
THEN J=J+1=2
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
44221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =3 //
IF (K<I) //
THEN J=J+1=2
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
44221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =3 //
IF (K<I) //
THEN J=J+1=3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
44221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1=3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
44221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =2 //
IF (K<I) //
THEN J=J+1=3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
44221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =3 //
IF (K<I) //
THEN J=J+1=3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
44221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =4 //
IF (K<I) //
THEN J=J+1=3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
44221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =5 //
IF (K<I) //
THEN J=J+1=3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
44221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =5 //
IF (K<I) //
THEN J=J+1=3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
34221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =5 //
IF (K<I) //
THEN J=J+1=3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
34221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
34221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1 =2
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
34221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =2 //
IF (K<I) //
THEN J=J+1 =2
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
34221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1 =3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
34221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =2 //
IF (K<I) //
THEN J=J+1 =3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
34221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =3 //
IF (K<I) //
THEN J=J+1 =3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
34221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =4 //
IF (K<I) //
THEN J=J+1 =3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
34221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =5 //
IF (K<I) //
THEN J=J+1 =3
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
34221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =5 //
IF (K<I) //
THEN J=J+1 =4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
34221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; //
IF (K<I) //
THEN J=J+1 =4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
34221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =2 //
IF (K<I) //
THEN J=J+1 =4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
34221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =3 //
IF (K<I) //
THEN J=J+1 =4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
34221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =4 //
IF (K<I) //
THEN J=J+1 =4
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
34221
1 2 3 4 5 6 7
Void mapcolor(int R[][],int n,int s[])
{ ……
I=6; J=1; // IJ
while ( I<=n)
{ while(( J<=4)&&(I<=n))
{ k=1; // k
while(( k<I)&&(s[k]?R[I,k]!=J))
k=k+1; =4 //
IF (K<I) //
THEN J=J+1 =5
ELSE{ s[I]=J; I=I+1; J=1; }//
}
IF (J>4) THEN { I=I-1; J=s[I]+1 }}
}
0000000
0011011
0101101
0110101
0011001
0100001
011 11 10
1 2 3 4 5 6 7
1
2
3
4
5
6
7
34221
1 2 3 4 5 6 7
a b c b
a b c
a b b d c
a b c b d c
a b c b d
a b c b d c a
a b b c d
S [ 1,7 ]
1 2 3 4 5 6 7
a b
c d
(1)(2)
(4)
(7)
(3)
(5)
(6) (1)(2) (4)
(7)
(3)
(5)
(6)
(1)(2)
(4)
(7)
(3)
(5)
(6) (1)(2) (4)
(7)
(3)
(5)
(6) (1)(2) (4)
(7)
(3)
(5)
(6) (1)(2)
(4)
(7)
(3)
(5)
(6)
A+B*C-D/E
top1 ;
(a)
top2
OSNS
B
A
+;
(b)
OS
*C
NS
T1=B*C
A
+;
(c)
NS OS
T1
T2 ;
(d)
NS OS
T2=A+T1
E
D
T2
/
-;
(e)
NS OS
T3
T2
-;
(f)
T3=D/E
NS OS
(g)
NS OS
T4
T4=T2-T3
(h)
A-B/C+D*E
top2;
(a)
OSNS
B
A ;
(b)
OS
/C
NS
A ;
(c)
NS OS
T1
T1=B/C
A ;
(d)
NS OS
T1
D
E
+* T2
T1
A
+;
(e)
NS OS
T2=D*E
T2
T3
+;
(f)
T3=A-T1
NS OS
T4=T2+T3
(g)
NS OS
T4
(h)
P76#11,.
# de f in e s iz e 1 0 0
i n t C o rre ct( ch a r ex p [ siz e],i n t l en )
{ cha r s[ siz e]; i n t t o p =0,i =0,t a g =1;
w h i l e(i< l en && ta g ! =0)
{ i f ( ex p [ i ] ==? (? | | e x p [ i ] ==? [?
| | e x p [ i ] ==? {? )
{ to p ++ ;
s[ t o p ] =e x p [ i ] ; }
i f ( ex p [ i ] ==? )? ) { i f ( s[ t o p ] ==? (? ) top -- ;
el se tag =0;}
i f ( ex p [ i ] ==? ]? ) { i f ( s[ t o p ] ==? [? ) top -- ;
el se tag =0;}
i f ( ex p [ i ] ==? }? ) { i f ( s[ t o p ] ==? {? ) t o p -- ;
el se tag =0;}
i ++ ; } i f ( t o p >0) t a g = 0 ; retu rn t a g ; }
void main()
{
int len,tag;
char exp[size]=“dsgdsg(wetewt{eewtwrwer)etewtewt[wetwet]etwet}";
len=strlen(exp);
tag=Correct(exp,len);
if (tag==1)
printf("right\n");
else
printf("wrong\n");
}
wrong
P76#13 3579
(a) 7,5,3,9
(b) 9,7,5,3
(c) 7,5,9,3
(d) 9,5,7,3
A[n]
A[T+1]
A[T] ….
A[1]
A[T]
T
10
30
40
base
P76#14
….
d
T=T+1
P76#15 top=0 abcd pushpushpoppushpop
push
b c 2
P76#17
1 2 3
2 1 3