有人可以解释一下吗?

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()函数执行以下操作:

  1. 定义临时变量 x
  2. 为新节点分配空间。
  3. 输入一个整数(%d 代码到 scanf )并将其存储在 x 中。
  4. 将保存到 x 的值存储在新分配的节点的数据字段中。
  5. 存放旧的“头”。变量' list '指向的列表作为新分配节点中的链接。
  6. 将新节点设置为存储在变量“ list ”中的列表的新头部。
  7. 这是链接列表的一个非常基本的实现( http://en.wikipedia.org/wiki / Linked_list )整数。

其他提示

第一行:为列表的单个附加节点分配内存。

第二行:将当前列表作为此元素后的延续。

第三行:将当前元素作为列表的开头。

temp和list在addbeg中不可见,因为它们是在main中声明的。它们要么需要传入addbeg,要么在main(global,yuck)之外声明。

malloc为新节点分配空间。

temp->link = list

list = temp

将新节点作为列表的头部。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top