c语言问题!急!!

typedef struct node {
char *data;
int weight;
bool end_of_key;
struct node * left;
struct node * equal;
struct node * right;
} node_t;

int main(int argc, char *argv[]) {
node_t* root = NULL;
int weight;
int i = 1;

root=insert(root,"cut", 3);

if (root != NULL)
free(root);

return 0;
}

node_t* insert(node_t* pNode,char* word, int weight) {

if (pNode == NULL){
/**
* Create a new pNode, and save a character from word
*/
pNode = (node_t*)malloc(sizeof(node_t));

pNode->left = NULL;
pNode->equal = NULL;
pNode->right = NULL;
pNode->data = word;
}
return pNode;
}

为什么if(pNode == NULL) 会显示segmentation fault??该怎么改正!!

    root=insert(root,"cut", 3);调用了没有定义的函数insert,应当在它之前加一句node_t* insert(node_t *,char *, int);。

    insert函数体也有潜在问题,要是pNode = (node_t*)malloc(sizeof(node_t));不成功,后面4句都要出错。所以要判断一下,成功了就执行那4句并返回pNode,不成功则不执行那4句而返回NULL。

请看图片,并没有你说的错误:

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-09-05
1、
#include<stdio.h>
因为宏NULL定义在其中。
2、#include<stdlib.h>
因为包含了malloc函数的定义。
3、因为insert函数是定义在main的后面,调用它之前应声明,用
node_t* insert(node_t *,char *, int);
第2个回答  2017-09-04
我运行了你的代码,并没有报这个错。
第3个回答  2019-04-24
这是个变量的作用范围的问题,程序定义的时候,第一个i的做用范围是整个一级大括号,当程序跑到第二个大括号时,i重新定义了
这里的i是一个局部变量,在他的定义范围理内有效(即第二级大括号),再下来就是第三级大括号,第四个输出语句就是在第三级里面,而语句i++在第四级大括号里面,所以i先加1为4,然后输出两次,最后一次输出又回到了第一级大括号中,i=3的定义已经无效了,所以i=1。

C语言的问题!
5,最后一步是,当程序以混合语言编写的程序链接时,在FORTRAN库之前指定C库。重新解决了秋天的飞行问题。

C语言弱智问题! 请帮忙解答!1个小时之类!
(a+b+c)\/3);}

c语言问题求解!!!谢谢!!!
2、字符串长度问题。字符串赋初值时,系统自动给字符串分配一个空间存储‘\\0’字符结束判定字符。他是一个隐藏字符。求字符长度时,strlen求字符长度时会自动忽略‘\\0’,但sizeof不会,所以求字符长度时,sizeof() = strlen() +1;3、自增运算符的运算机制问题。自增运算符放在变量后面,如a++,...

C语言结构体与链表问题【急】【急】【急】【急】【急】【急】【急...
(1) char name[ ]中的数组name没有指定大小,此处可以定义为name[20](2) p = stu也有错误,应该将结构体的首地址赋给指针p,从而使p指向该结构体。正确的写法是:p = &stu;(3) (*p).name = "Mary"也有错误,此处不能这么赋值。正确的写法是:strcpy(p->name, "Mary")(4) scanf("%...

C语言问题,急
逗号运算符。先执行括号内的表达式。a=4*5=20 a*2=40 表达式a=4*5,a*2的值是40,且a的值是20 a+6=20+6=26 逗号运算符,最后一个表达式的值就是整个表达式的值。表达式(a=4*5,a*2),a+6的值是26。

求c语言一些常见问题,
在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写 if (a=3) then …但C语言中,“=”是赋值运算符,“==”是关系运算符。如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。5....

C语言作业,急急急求解答
题分析:这个问题可能是由于软件代码中存在大量的冗余、重复计算或者低效算法等因素导致的。另外,如果软件需要加载大量的数据或者进行网络连接,则也会影响其启动速度。解决方案:为了解决这个问题,我们可以从以下几个方面入手:1.优化程序代码:检查程序中是否存在冗余、重复计算或者低效算法等因素,对代码进行...

c语言几个小小的问题 高手帮个忙
1. C 逗号在这里不合法 2. 输出2,虽然x是浮点型,但是10和4都是整型,所以先按整型运算,再将结果转换为浮点型 3. (++x, y++)表示这是一个逗号表达式,逗号表达式取最后一个表达式的值,也就是y++的值,所以输出结果是3和3 4. printf("%8.4g\\n",b); 这句输出8756,%g表示按%e或者...

c语言 急!!!
详情请查看视频回答

C语言问题求解,在线等,急!!!
1、根据题意每天从区间1~N中,依次深度-1,遇到某个深度0时停止作业,所修改的区间就是当日作业区间。2、独立函数实现一天作业(workForDay)。参数flag为1显示作业过程,如不需要传0。3、init函数为输入并返回动态数组。include <stdio.h> include <malloc.h> int len=0;\/\/路面长度 int *init(...

相似回答