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;
谢谢!
答案 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
。