题
有人可以解释一下吗?
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;.
解决方案
malloc()
用于分配内存 - 在本例中为新节点。
代码中定义的 addbeg()
函数执行以下操作:
- 定义临时变量
x
。 - 为新节点分配空间。
- 输入一个整数(
%d
代码到scanf
)并将其存储在x
中。 - 将保存到
x
的值存储在新分配的节点的数据字段中。 - 存放旧的“头”。变量'
list
'指向的列表作为新分配节点中的链接。 - 将新节点设置为存储在变量“
list
”中的列表的新头部。
醇>
这是链接列表的一个非常基本的实现( http://en.wikipedia.org/wiki / Linked_list )整数。
其他提示
第一行:为列表的单个附加节点分配内存。
第二行:将当前列表作为此元素后的延续。
第三行:将当前元素作为列表的开头。
temp和list在addbeg中不可见,因为它们是在main中声明的。它们要么需要传入addbeg,要么在main(global,yuck)之外声明。
malloc为新节点分配空间。
temp->link = list
和
list = temp
将新节点作为列表的头部。
不隶属于 StackOverflow