问题描述
- c语言的问题 求助。。。。
-
#include
#include
#include
typedef struct{
char *key;
char *val;
struct dnode *next;
}dnode;typedef struct{
struct dnode *a;
struct dnode *b;
struct dnode *c;
struct dnode *d;
struct dnode *e;
struct dnode *f;
struct dnode *g;
struct dnode *h;
struct dnode *i;
struct dnode *j;
struct dnode *k;
struct dnode *l;
struct dnode *m;
struct dnode *n;
struct dnode *o;
struct dnode *p;
struct dnode *q;
struct dnode *r;
struct dnode *s;
struct dnode *t;
struct dnode *u;
struct dnode *v;
struct dnode *w;
struct dnode *x;
struct dnode *y;
struct dnode *z;
}bnode;dnode *d_empty()
{
return NULL;
}bnode *b_empty()
{
return NULL;
}dnode *new_Node(char *key ,char *val,dnode *t)
{
if (t==NULL)
{
strcpy(t->key,key);
strcpy(t->val,val);
t->next=NULL;
return t;
}
else
{
t->next=new_Node(key,val,t->next);
return t;
}}
/*
dnode *new_NodeNode(dnode *t,dnode *d)
{
if (t==NULL)
{
t=d;
return t;
}
else
{
t->next=new_NodeNode(key,val,t->next);
return t;
}}
*/
dnode *find_Node(char *key ,dnode *t)
{
if (t==NULL)
{
return NULL;
}
else
{
if(strcmp(key,t->key)==0)
return t;
else
{
return find_Node(key,t->next);
}
}
}dnode *delete_Node(char *key ,dnode *t)
{
if (t==NULL)
{
return NULL;
}
else
{
if(strcmp(key,t->key)==0)
{
return t->next;
}
else
{
t->next=delete_Node(key,t->next);
return t;
}
}
}bnode *d_insert(char *key,char *val,bnode *kk)
{
switch(key[0])
{
case 'a':kk->a=new_Node(key,val,kk->a);break;
case 'b':kk->b=new_Node(key,val,kk->b);break;
case 'c':kk->c=new_Node(key,val,kk->c);break;
case 'd':kk->d=new_Node(key,val,kk->d);break;
case 'e':kk->e=new_Node(key,val,kk->e);break;
case 'f':kk->f=new_Node(key,val,kk->f);break;
case 'g':kk->g=new_Node(key,val,kk->g);break;
case 'h':kk->h=new_Node(key,val,kk->h);break;
case 'i':kk->i=new_Node(key,val,kk->i);break;
case 'j':kk->j=new_Node(key,val,kk->j);break;
case 'k':kk->k=new_Node(key,val,kk->k);break;
case 'l':kk->l=new_Node(key,val,kk->l);break;
case 'm':kk->m=new_Node(key,val,kk->m);break;
case 'n':kk->n=new_Node(key,val,kk->n);break;
case 'o':kk->o=new_Node(key,val,kk->o);break;
case 'p':kk->p=new_Node(key,val,kk->p);break;
case 'q':kk->q=new_Node(key,val,kk->q);break;
case 'r':kk->r=new_Node(key,val,kk->r);break;
case 's':kk->s=new_Node(key,val,kk->s);break;
case 't':kk->t=new_Node(key,val,kk->t);break;
case 'u':kk->u=new_Node(key,val,kk->u);break;
case 'v':kk->v=new_Node(key,val,kk->v);break;
case 'w':kk->w=new_Node(key,val,kk->w);break;
case 'x':kk->x=new_Node(key,val,kk->x);break;
case 'y':kk->y=new_Node(key,val,kk->y);break;
case 'z':kk->z=new_Node(key,val,kk->z);break;
}return kk;
}
bnode *d_search(char *key ,bnode *kk)
{
switch(key[0])
{
case 'a':return find_Node(key,kk->a);
case 'b':return find_Node(key,kk->b);
case 'c':return find_Node(key,kk->c);
case 'd':return find_Node(key,kk->d);
case 'e':return find_Node(key,kk->e);
case 'f':return find_Node(key,kk->f);
case 'g':return find_Node(key,kk->g);
case 'h':return find_Node(key,kk->h);
case 'i':return find_Node(key,kk->i);
case 'j':return find_Node(key,kk->j);
case 'k':return find_Node(key,kk->k);
case 'l':return find_Node(key,kk->l);
case 'm':return find_Node(key,kk->m);
case 'n':return find_Node(key,kk->n);
case 'o':return find_Node(key,kk->o);
case 'p':return find_Node(key,kk->p);
case 'q':return find_Node(key,kk->q);
case 'r':return find_Node(key,kk->r);
case 's':return find_Node(key,kk->s);
case 't':return find_Node(key,kk->t);
case 'u':return find_Node(key,kk->u);
case 'v':return find_Node(key,kk->v);
case 'w':return find_Node(key,kk->w);
case 'x':return find_Node(key,kk->x);
case 'y':return find_Node(key,kk->y);
case 'z':return find_Node(key,kk->z);
}
}bnode *d_delete(char *key , bnode *kk)
{
switch(key[0])
{
case 'a':kk->a=delete_Node(key,kk->a);break;
case 'b':kk->b=delete_Node(key,kk->b);break;
case 'c':kk->c=delete_Node(key,kk->c);break;
case 'd':kk->d=delete_Node(key,kk->d);break;
case 'e':kk->e=delete_Node(key,kk->e);break;
case 'f':kk->f=delete_Node(key,kk->f);break;
case 'g':kk->g=delete_Node(key,kk->g);break;
case 'h':kk->h=delete_Node(key,kk->h);break;
case 'i':kk->i=delete_Node(key,kk->i);break;
case 'j':kk->j=delete_Node(key,kk->j);break;
case 'k':kk->k=delete_Node(key,kk->k);break;
case 'l':kk->l=delete_Node(key,kk->l);break;
case 'm':kk->m=delete_Node(key,kk->m);break;
case 'n':kk->n=delete_Node(key,kk->n);break;
case 'o':kk->o=delete_Node(key,kk->o);break;
case 'p':kk->p=delete_Node(key,kk->p);break;
case 'q':kk->q=delete_Node(key,kk->q);break;
case 'r':kk->r=delete_Node(key,kk->r);break;
case 's':kk->s=delete_Node(key,kk->s);break;
case 't':kk->t=delete_Node(key,kk->t);break;
case 'u':kk->u=delete_Node(key,kk->u);break;
case 'v':kk->v=delete_Node(key,kk->v);break;
case 'w':kk->w=delete_Node(key,kk->w);break;
case 'x':kk->x=delete_Node(key,kk->x);break;
case 'y':kk->y=delete_Node(key,kk->y);break;
case 'z':kk->z=delete_Node(key,kk->z);break;
}
return kk;
}void main()
{
char *cmd;
cmd=malloc(100);
char *key;
key=malloc(100);
char *val;
val=malloc(100);bnode *t; t=malloc(sizeof(bnode)); dnode *u; u= malloc(sizeof(dnode)); u->key=malloc(100); u->val=malloc(100); u->next=NULL; t->a=u; t->b=u; t->c=u; t->d=u; t->e=u; t->f=u; t->g=u; t->h=u; t->i=u; t->j=u; t->k=u; t->l=u; t->m=u; t->n=u; t->o=u; t->p=u; t->q=u; t->r=u; t->s=u; t->t=u; t->u=u; t->v=u; t->w=u; t->x=u; t->y=u; t->z=u; while (scanf("%s", cmd) != EOF){ if(strcmp(cmd, "insert") == 0){ scanf("%99st%99s", key, val); t = d_insert(key, val, t); }else if(strcmp(cmd, "delete") == 0){ scanf("%99s", key); t = d_delete(key, t); }else if(strcmp(cmd, "search") == 0){ scanf("%99s", key); u = d_search(key, t); if(u != NULL){ printf("%sn", u->val); }else{ printf("(not found)n"); } }else if(strcmp(cmd, "quit") == 0){ break; }/*else if(strcmp(cmd, "show") == 0){ btree_print(t, 0); }*/else{ printf("command not found: %sn", cmd); } cmd[0] = key[0] = val[0] = ''; }
}
insert一运行就崩溃 咋回事