广义表c语言实现
#include
int Point_0 0;
int Point_1 11;
void inistak int *tws int i 0;
while ! tws int * malloc 2*5+1 *sizeof int ;
for i 1;i 10;i++ * tws+i 0; int push int *tws,int i,int *x /*i 0时正向,i 1时反向*/ int j;
if i Point_1--;
j Point_1;
if j 5 ++Point_1;return 1; else Point_0++;
j Point_0;
if j 5 --Point_0;return 1; * tws+j *x;
return 0; int pop int * tws,int i,int *p if i if Point_1 10 return 1;
*p * tws+Point_1 ;
Point_1+ 1; else if Point_0 1 return 1;
*p * tws+Point_0 ;
Point_0- 1; return 0; int main void int *tws;
int S 0;
int *data int * malloc sizeof int ;
inistak tws ;
while 1 printf "Select:\n1.PUSH head\n2.POP head\n3.PUSH tail\n4.POP tail" ;
printf "\n" ;
scanf "%d",&S ;
if S 1 printf "Input data int : " ; scanf "%d",data ; printf "\n" ; S push tws,0,data ; if S printf "Stack is full" ; else printf "%d is Pushed",*data ; else if S 2 if pop tws,0,data printf "Stack is empty" ; else printf "pop is %d",*data ; else if S 3 printf "Input data int : " ; scanf "%d",data ; printf "\n" ; S push tws,1,data ; if S printf "Stack is full" ; else printf "%d is Pushed",*data ; else if S 4 if pop tws,1,data printf "Stack is empty" ; else printf "pop is %d",*data ; system "pause" ; return 0; #include
int * Ons NULL;
int Point 0;
int N 10;
int push int x Point++;
if Point N return 1;
* Ons+Point x;
return 0; int pop int *x if Point *x * Ons+Point ;
Point--;
return 0; return 1; void Arrange int *ons,int *train,int *temp int i 0,j 0;
Ons int * malloc N+1 *sizeof int ;
for i 0;i N;i++ * Ons+i 0;
for i 0;i N;i++ push train[i] ;
printf "Train %d push\n",i+1 ;
if Ons[Point] pop temp+j ;j++;printf "Train %d out\n",i+1 ; while j N pop temp+j ;
j++; int main void int i 0;
int train[10] 0,0,1,0,1,1,1,0,1,1 ;
int temp[10];
for i 0;i N;i++ if train[i] printf "H " ;
else printf "S " ; printf "\n" ;
Arrange Ons,train,temp ;
for i 0;i N;i++ if temp[i] printf "H " ;
else printf "S " ; system "pause" ;