Devc++错误信息:Program received signal SIGSEGV, Segmentation fault.

Devc++错误信息:Program received signal SIGSEGV, Segmentation fault.,第1张

概述本文章向大家介绍Devc++ 错误信息:Program received signal SIGSEGV, Segmentation fault.,主要包括Devc++ 错误信息:Program received signal SIGSEGV, Segmentation fault.使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

#define EQ(a,b) ((a) == (b))

#define LT(a,b) ((a) < (b))

#define LQ(a,b) ((a) > (b))

typedef int ElemType;

typedef struct{

ElemType key;

}SElemType;

typedef struct BiNode{

SElemType data;

struct BiNode *lchild,*rchild;

}BiNode,*BiTree;

BiTree T;

Status CreateDST(BiTree &T,int n){

int i;

ElemType key;

for(i=1;i<=n;i++){

printf("请输入第%d个元素:",i);

scanf("%d",&key);

InseartBST(T,key);

}

return OK;

}

Status SearchBST(BiTree T,ElemType key,BiTree f,BiTree &p){

if(!T){

p=f;

return FALSE;

}

else if(EQ(key,T->data.key)){

p = T;

return TRUE;

}else if(LT(key,T->data.key)){

return SearchBST(T->lchild,key,T,p);

}else{

return SearchBST(T->rchild,p);

}

}

Status InseartBST(BiTree &T,ElemType key){

BiTree p;

if(!SearchBST(T,NulL,p)){

BiTree s;

s = (BiTree)malloc(sizeof(BiNode));

if(!s) return ERROR;

s->data.key = key;

s->lchild = s->rchild = NulL;

if(!p) T = s;

else if(LT(key,p->data.key)) p->lchild = s;

else p->rchild = s;

return TRUE;

}else return FALSE;

}

上面的信息是在我编写二叉排序树创建,查找,插入元素时产生的,产生的原因如下:

BiTree T;//首先声明一个二叉树类型的指针变量,但是变量T只是一个地址,大多数情况下不为NulL.这便是产生上述错误的主要原因(将T赋值为NulL即可)。

CreateDST(T,n); //接着,创建二叉排序树

InseartBST(T,key); // 向排序树中插入元素key

SearchBST(T,p)  //在插入元素key之前,要先查找树中是否存在与key相同的元素,不存在才会插入到树中

但是由于变量T不为空,下面本应执行的代码并没有执行:

if(!T){


        p=f;


        return FALSE;


    }

而是执行下面的代码:

else if(EQ(key,T->data.key)){


        p = T;


        return TRUE;


    }else if(LT(key,T->data.key)){


        return SearchBST(T->lchild,p);


    }else{


        return SearchBST(T->rchild,p);


    }

但是开头只是声明了变量T,并没有为其开辟空间,所以T->data.key是有问题的,最终导致了上面的问题。

故而只需把T赋值为空即可。

总结

以上是内存溢出为你收集整理的Devc++ 错误信息:Program received signal SIGSEGV, Segmentation fault.全部内容,希望文章能够帮你解决Devc++ 错误信息:Program received signal SIGSEGV, Segmentation fault.所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1264921.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存