Untitled
unknown
plain_text
4 years ago
1.8 kB
6
Indexable
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct Node_{
int data;
struct Node_ *T,*F;
}Node;
char list[3005];//數字差48
int number[3005];
int pos,m;
int find(Node* root);
Node* make(char c);
Node* construct(void);
int main(void){
int N,ans;
Node *root=NULL;
scanf("%s",list);
pos=strlen(list);
printf("pos:%d\n",pos);
root=construct();
printf("I find root!\n");
scanf("%d",&N);
for(int i=0;i<N;i++){
printf("print me!\n");
for(int j=1;j<=(pos/2+1);j++){
printf(" j=%d;",j);
scanf("%d",&number[j]);
}
printf("\nI eat all number!\n");
ans=find(root);
printf("%d\n",ans);
}
return 0;
}
Node* construct(void){
Node* node=NULL;
printf("in construct%d\n",m);
if(m<pos){
node=make(list[m]);
m++;
if(list[m]=='?'){
m++;
node->T=construct();
m++;
if(list[m]==':'){
m++;
node->F=construct();
}
}
else{
node->T=NULL;
node->F=NULL;
}
return node;
}
}
Node* make(char c){
printf("in make\n");
Node* node=(Node*)malloc(sizeof(Node));
printf("(int)list[%d]-48=%d\n",m,(int)list[m]-48);
node->data=(int)list[m]-48;
node->T=NULL;
node->F=NULL;
return node;
}
int find(Node* root){
printf("in the find\n");
printf("%d\n",root->data);
if(root->data==1){
if(root->T!=NULL) return find(root->T);
else return number[root->data];
}
else{
if(root->F!=NULL) return find(root->F);
else return number[root->data];
}
}Editor is loading...