0

我正在尝试在跳过列表中插入一些元素

typedef struct skiplist {

struct node * header;
struct node * termnode;

}skiplist;

typedef struct node
{
int key;
entr value;
struct node *next[MaxLevel];
}node;

其中节点按它们的键排序。但是,当我尝试插入一个比前一个键更大的节点时,我得到一个段错误,我发现它发生在插入函数中

void insert(list l,int skey,entr newvalue) {
nod update[MaxLevel-1];
for(i=0;i<=MaxLevel-1;i++) {
    update[i]=(nod)malloc(sizeof(struct node));
}

nod x=l->header;
for(i=MaxLevel-1;i>=0;i--) {
    while (x->next[i]->key<skey) {
        x=x->next[i];
    }
    update[i]=x;    
}
x=x->next[0];
if(x->key=skey) x->value=copyvalue(newvalue);
else
{
    int lvl=randl();
    x=makenode(l,lvl,skey,newvalue);
    for(i=0;i<=lvl;i++) {

        x->next[i]=update[i]->next[i];
        update[i]->next[i]=x;
    }
}
printf("\ninserted to list\n");
}   

while (x->next[i]->key<skey)

因为

next[i] 

一片空白。我不明白为什么会这样,任何帮助将不胜感激

4

0 回答 0