【发布时间】:2020-06-23 01:37:09
【问题描述】:
结构:
//linked list
struct list
{
int32_t data;
struct list *next;
};
struct list *head;
首先,初始化链表(每个节点为0):
void initLinkedList(int size)
{
head = (struct list*)malloc(sizeof(struct list)*size);
struct list *current = head;
for(int i = 0; i < size; i++)
{
(current+i)->data= 0;
}
}
功能:
void changeNode(int32_t element, int index)
{
struct list *current = head;
for (int i = 0; i < index; i++)
{
current = current->next;
}
current->data= element;
}
所以基本上,我想用size节点创建一个链表,然后通过函数改变节点的数据。
但是我在函数的这一行遇到了分段错误:
current->localVar = element;
那么,如何在不插入新节点的情况下更改节点的数据?
【问题讨论】:
-
问题出在你的 changeNode 函数上,你没有分配 current->next 到任何指针。
-
您可能希望养成使用
size_t索引的习惯,除非负索引是一回事。
标签: c linked-list