这里是我的结构创建链表有一个for循环
struct ListItem{
int data;
struct ListItem *next;
};
假设链表的第一个节点将有数据= 0,我想写一个for循环,产生大小的链表5,但我不知道如何工作
我尝试以下
int main(int argc, char* argv[]){
struct ListItem a;
a.data = 0;
for (int i = 1; i < 5; i++){
struct ListItem *pointer = &a;
struct ListItem nextnode;
nextnode.data = i;
a.next = &nextnode;
pointer = pointer->next;
}
}
但结果是 a.data = 0 和a.next->数据= 4
你正在服用的引用到本地(nextnode)后获得释放,这样做是不正确 - 您需要为您创建的每个节点(和自由它的时候分配内存你完成了)。你熟悉C中的内存分配吗? –
每次通过循环时,您还将“指针”设置为链接列表中的第一个节点,因此节点0指向节点4(N [0] - > N [4])并不奇怪。内存管理部分虽然是更大的关注。 –