【发布时间】:2014-05-26 22:14:39
【问题描述】:
我是链表的新手。 在最初创建链表时,我们编写 struct node *head=NULL; 这是什么意思?
【问题讨论】:
-
你认为这意味着什么?
标签: linked-list
我是链表的新手。 在最初创建链表时,我们编写 struct node *head=NULL; 这是什么意思?
【问题讨论】:
标签: linked-list
最初它包含一些垃圾值 .所以,为了创建一个链表(单),你需要将它初始化为 NULL。因此创建第一个节点 ( 通过检查条件 head==NULL) 变得更容易,该条件为真,因此创建了第一个节点。现在我们可以通过遍历到末尾并添加一个新节点来将新节点添加到现有的链表中。 因此,如果您还没有将头指针初始化为 NULL,则无法创建链接列表。
if(head==NULL)
{
newnode->next=NULL;
head=newnode;
}
else
{
ptr=head;
while(ptr->next!=NULL)
{
ptr=ptr->next;
}
ptr->next=newnode;
newnode->next=NULL;
}
【讨论】:
对于初学者来说,初始化程序很难阅读。恕我直言,最好将它们作为声明和赋值的组合来阅读:
struct node *p = NULL;
相当于:
struct node *p;
p = NULL;
请注意,初始化器应用于指针(p is 是一个指针)而不是它指向的位置。 (它指向无处,因为它是NULL)
【讨论】:
每当您创建一个链表时,我们都必须对其进行初始化,并且由于它的开头没有任何节点(开头为空链表),因此 start/head 指向 null。这就是 *head=NULL 的含义。
【讨论】:
零是无效地址。指针变量等于 null 且地址为 null 意味着指针变量变量未指向有效的内存位置。
【讨论】: