c-排序的双链表和插入值



我正在尝试使用函数inserer((创建一个排序的双链表,以便在其中插入值。

我把整个程序写如下:

#include <stdio.h>
#include <stdlib.h>
typedef struct bi{
    int val;
    struct bi *prec;
    struct bi *suiv;
}bil;
void inserer (int v, bil *tete)
{
    bil *cour, *elt;
    cour = tete->suiv;
    while (cour != tete && cour->val < v)
        cour = cour->suiv;
    elt = (bil*) malloc(sizeof(bil));
    if (elt)
    {
        elt->val = v;
        (cour->prec)->suiv = elt;
        elt->suiv = cour;
        elt->prec = cour->prec;
        cour->prec = elt;
    }
}
int main()
{
    bil* tete;
    /*Creation tete fictif*/
    tete = (bil*) malloc (sizeof(bil));

    tete->prec = tete;
    tete->prec = tete;
    inserer (3,tete);
    return 0;
} 

然后我尝试使用该函数并插入一个值(示例中为3(CCD_ 1,但它不断给出分割错误。我们将不胜感激。

tete->suiv在中未初始化时使用

cour = tete->suiv;

更改

tete->prec = tete;
tete->prec = tete;

tete->prec = tete;
tete->suiv = tete;

由于cour = tete->suiv; ,您出现分段故障

最初,两个指针都应分配给tete

cour->suiv = tete;
cour->suiv = tete;

您从未将tete->suiv设置为任何值。在main中,您可能是指

tete->prec = tete;
tete->suiv = tete;

相关内容

  • 没有找到相关文章

最新更新