【发布时间】:2014-03-06 21:16:12
【问题描述】:
这是我的结构
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.数据 = 0 和 a.next->data = 4
【问题讨论】:
-
您正在引用本地(下一个节点),这样做是不正确的 - 您需要为您创建的每个节点分配内存(并在完成后释放它)。你熟悉 C 中的内存分配吗?
-
每次循环时,你也将'pointer'设置为链表中的第一个节点,所以节点0指向节点4也就不足为奇了(N[0]->N[4 ])。内存管理部分是更大的问题。
标签: c for-loop struct linked-list singly-linked-list