-1

谁能解释一下?

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;.
4

4 回答 4

9

malloc()用于分配内存 - 在这种情况下用于新节点。

您的代码中定义的addbeg()函数执行以下操作:

  1. 定义一个临时变量x
  2. 为新节点分配空间。
  3. 输入一个整数(%d代码scanf)并将其存储在x.
  4. 将保存到的值存储x在新分配节点的数据字段中。
  5. 将变量 ' ' 指向的列表的旧“头”list作为链接存储在新分配的节点中。
  6. 将新节点设置为存储在变量“ list”中的列表的新头。

这是一个非常基本的整数链表(http://en.wikipedia.org/wiki/Linked_list )实现。

于 2009-08-01T11:39:20.363 回答
0

malloc 为新节点分配空间。

temp->link = list

list = temp

使该新节点成为列表的头部。

于 2009-08-01T11:38:43.283 回答
0

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

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

第三行:使当前元素成为列表的开头。

于 2009-08-01T11:38:46.933 回答
0

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

于 2009-08-01T13:06:37.040 回答