c语言的问题 求助。。。。

问题描述

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一运行就崩溃 咋回事

时间: 2024-11-06 03:34:00

c语言的问题 求助。。。。的相关文章

c语言-简单的C语言程序--小白求助

问题描述 简单的C语言程序--小白求助 #include<stdio.h> #include<math.h> #include<stdlib.h> #include<string.h> int main() { int N,n,i; char t[1000],s[1000]; scanf("%d",&N); while(N--) { gets(t); scanf("%d",&n); for(i=0;i&

printf-c语言代码问题~~求助~~~~~

问题描述 c语言代码问题~~求助~~~~~ 设甲乙两人同年出生,但月日不同.请计算甲乙的年龄差的绝对值.例如输入1997 2 27 3 10(表明甲乙出生在1997年,甲出生在2月27日,乙出生在3 月10日),则输出11(甲乙相差11天) 思路: 1.分别计算甲乙的生日是该年的第多少天(分别用n1,n2表示).计算该年的多少天,可通过函数调用实现; 2.年龄差绝对值计算 #include<stdio.h> int fun(int y,int m,int d) {int s=0; for(in

一个简单的c语言填空 初学者求助

问题描述 一个简单的c语言填空 初学者求助 如图所示 空格处该填什么呢?我填了ptr-stu<3 ptr++ 但是学校的系统说不对 解决方案 ptr < stu + 3; ptr++ 解决方案二: 楼上加一,应该是对的 解决方案三: c语言中指针减法是没有意义的

一个c语言问题 初学者求助

问题描述 一个c语言问题 初学者求助 如图所示 为什么改变for循环的条件 i和j的值会分别变成1 断点在那句 他又是为什么改变的呢 解决方案 关于C语言的一个问题c语言中的一个问题一个有趣的C语言问题 解决方案二: 上一步什么都没做 i和j为什么会变化呢? 然后改成了下图 就都是0了 解决方案三: 最上边是写错了吧? c语言判断相等应该是: i==j 解决方案四: 没看懂你的意思,断点不是在循环之前么?那么改循环和断点处的值有什么关系?

程序运行异常 c语言小问题 求助

问题描述 程序运行异常 c语言小问题 求助 想写一个求大数的斐波那契的程序,需要数组来实现进位,然后进位条件那(就是for循环的条件那里)有问题 ,改一下(改成c!=0或改成a[i-1][j]!=0||a[i-2][j]!=0,合起来就不对了)就可以正常运行,想问下现在这样写有什么问题吗? #include #include const int A=10000; int a[1000][10]; int main() { int n,i,j,c,cc; memset(a,0,sizeof(a))

c语言-新人小白求助C语言 各位大大快来啊

问题描述 新人小白求助C语言 各位大大快来啊 #include int main(void) { int a; int b; int c; int n; printf("请输入三个整数值 分别代表 日 月 年:"); scanf("%d",&a); scanf("%d",&b); scanf("%d",&c); n=a%10( n==1?printf("%dst ",a):( n%1

全新的.NET解释器 - Mono已经到来

Mono通过新的运行代码方式,完善了自己的即时编译器和静态编译器. 2001年,Mono项目正式开始,Mono开发团队为.NET指令集编写了一个解释器,用于在Linux上引导一个自托管的.NET开发环境. 当时认为解释器只是一个临时工具,可以在建立一个Just-in-Time(JIT)编译器的时候使用它.解释器(mint)和JIT引擎(mono)一直保持同步存在的状态,直到可以将JIT引擎移植到所有支持的平台. 当引入泛型时,同时保留解释器和JIT引擎的工程成本变得很高,不再值得,所以去掉了解释

求助贴:c语言编程问题

问题描述 求助贴:c语言编程问题 解决方案 在你的程序里scanf()函数返回的是一个正整数,无论你输入的是不是-1,他接收的一直是一个参数,所以返回的一直是1.并且还是使用"%lu"来接收参数的,输入-1一定不会退出程序的,输入1.2scanf()只接收到了1,因为1.2不符合输入的规则"%lu",也会返回1.程序不会停下 解决方案二: 疑惑:1.输入0有效,输出真确2.输入-1不退出,-1被强制转换为int类型3.输入1.2输出1个奇数后又printf();然后

算法-求助大神:c语言求最长公共子序列问题

问题描述 求助大神:c语言求最长公共子序列问题 我写的这个能正确求出最长序列元素个数但是输出的最长序列却是乱码,求大神指教.代码如下: #include #include #include #define MAX 101 int Long(char a[],char b[],char result[] ) { int m,n; m=strlen(a); n=strlen(b); int str[MAX][MAX]; int i,j,sum; for(i=0;i<=m;i++) { str[i][

c语言-C语言版非递归马踏棋盘·死循环了·求大神解答·小弟新手求助

问题描述 C语言版非递归马踏棋盘·死循环了·求大神解答·小弟新手求助 这是出现死循环的代码bool solution(Move move, Pos &beginPos){ if(!move) { printf("solution Failed!"); return false; } int chessBoard[8][8] = {0}; push(move, beginPos); chessBoard[beginPos.mX][beginPos.mY] = 1; int ste