链接列表理解语法

时间:2016-03-20 11:31:39

标签: c pointers syntax linked-list

1  struct node
2  {
3     int data;
4     struct node *next;
5  }*head;
6 
7  void append(int num)
8  {
9     struct node *temp,*right;
10    temp= (struct node *)malloc(sizeof(struct node));
11    temp->data=num;
12    right=(struct node *)head;
13    while(right->next != NULL)
14        right=right->next;
15    right->next =temp;
16    right=temp;
17    right->next=NULL;
18 }

我需要帮助理解此代码的某些部分。

1)代码应该做什么?

2)第5行做什么?

}*head;

当我制作结构时,我常常看到这个:

struct node
{
  int data;
  struct node *next;
};

3)第12行应该做什么?不确定这种语法

right=(struct node *)head;

我的猜测是它需要头指向并正确指向它。那么为什么不这样做:right = head;

谢谢!

2 个答案:

答案 0 :(得分:0)

所以,这可能不是最完整的答案: 关于}*head;,这只是立即声明结构的头部,一个名为head的实例,它本身是一个指向struct实例的指针。然后,在第12行,使用right = (struct node *)head,指针正在被转换。也许这是为了安全或清晰;我不确定。

答案 1 :(得分:0)

第5行声明了一个全局变量Preview in Pale Moon.sublime-build,它是一个指向之前声明的结构类型的指针。

第12行将head分配给head。演员阵容不是必需的。

该函数分配一个新节点,为right成员提供data的值,转到列表的末尾并附加它。

num

第15行附加新节点。变量15 right->next =temp; 16 right=temp; 17 right->next=NULL; 现已可用,并为其分配了right。第16行现在将列表的最后一个成员的temp成员设置为null。最后两行可以简单地写成next