有人可以解释一下吗?
struct node
{
int data;
struct node * link;
}
main()
{
struct node *p, *list, *temp;
list = p = temp = NULL;
.........................
.........................
}
addbeg()
{
int x;
temp=malloc(sizeof(struct node));
scanf("%d", &x);
temp->data=x;
temp->link = list;
list=temp;
}
这是一个通过C语言在链表中输入数据的代码。代码不完整,但我认为它足以达到目的。请解释基本上这些代码的编码:
temp=malloc(sizeof(struct node));
和
temp->link = list;
list=temp;.
答案 0 :(得分:9)
malloc()
用于分配内存 - 在本例中为新节点。
代码中定义的addbeg()
函数执行以下操作:
x
。%d
代码到scanf
)并将其存储在x
。x
的值存储在新分配的节点的数据字段中。list
”指向的列表的旧“头部”存储为新分配的节点中的链接。list
”中的列表的新头部。这是整数链表(http://en.wikipedia.org/wiki/Linked_list)的一个非常基本的实现。
答案 1 :(得分:0)
malloc为新节点分配空间。
temp->link = list
和
list = temp
将新节点作为列表的头部。
答案 2 :(得分:0)
第一行:为列表的单个附加节点分配内存。
第二行:将当前列表作为此元素后的延续。
第三行:将当前元素作为列表的开头。
答案 3 :(得分:0)
temp和list在addbeg中不可见,因为它们是在main中声明的。它们要么需要传入addbeg,要么在main(global,yuck)之外声明。