首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复在链表中访问此next时出现的分段错误?

如何修复在链表中访问此next时出现的分段错误?
EN

Stack Overflow用户
提问于 2019-05-10 11:55:46
回答 1查看 32关注 0票数 0

我是一个学习数据结构的学生,试图实现一个hashmap函数,该函数将使用链表的节点添加元素。当我调用next value时,我在else语句中得到了一个段错误,并且我不知道为什么。感谢您的帮助,谢谢大家。

代码语言:javascript
复制
  void insertMap (struct hashMap * ht, KeyType k, ValueType v)
  {  /*write this*/
int idx = stringHash1(k);
struct hashLink * hlnk;
struct hashLink * plink;
assert(ht);

if(ht->table[idx] == NULL){
    hlnk = (struct hashLink *) malloc(sizeof(struct hashLink));
    hlnk->value = v;
    hlnk->key = k;
    hlnk->next = NULL;
    ht->table[idx] = hlnk;
    ht->count++;
}

else{
            plink = ht->table[idx];
            hlnk = (struct hashLink *) malloc(sizeof(struct hashLink));
            hlnk->value = v;
            hlnk->key = k;
            hlnk->next = plink->next;
            plink->next = hlnk;
            ht->count++;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-05-10 12:07:17

如果您尝试在列表的前面插入节点,则还需要更新ht->table[idx]

当前您正在更新else案例中的本地指针plink

代码语言:javascript
复制
else{
           .....
            plink->next = hlnk; //this line only updates the local pointer
            ht->count++;
    }

它应该是

代码语言:javascript
复制
  else{
               .....
               ht->table[idx] = hlnk;
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56070485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档