题目是要删除单链表的头元素的函数
我的解答是:
void DeleteHead(node *head)
{
node *p;
p=head->next;
head=head->next;
free(p);
}
而答案却是:
{
node *p;
p=head->next;
head->next=p->next;
free(p);
}
为什么呢,我怀疑一直以来我对头指针的理解是错误
----------------解决方案--------------------------------------------------------
node *p = head;
head = head->next;
free(p);
我乱写的。..
----------------解决方案--------------------------------------------------------
题目是要删除单链表的头元素的函数
我的解答是:
void DeleteHead(node *head)
{
node *p;
p=head->next;
head=head->next;
free(p);//p和head指向同一个.
}
而答案却是:
{
node *p;
p=head->next;
head->next=p->next;
free(p);
}
为什么呢,我怀疑一直以来我对头指针的理解是错误
----------------解决方案--------------------------------------------------------
个人认为2楼的比你的答案好.
----------------解决方案--------------------------------------------------------
我知道我错了,大家觉得答案是对的吗?
----------------解决方案--------------------------------------------------------
要删的是头结点,首先你得保证下个结点不能丢失.
还有.那个答案是带头结点的删除头结点是第二个结点.
所以删掉的是head->next
而2楼删的是不带头结点的head;
----------------解决方案--------------------------------------------------------
个人认为2楼的比你的答案好.
----------------解决方案--------------------------------------------------------
node *p;
p=head->next;
free(head);
head=p;
----------------解决方案--------------------------------------------------------
在C中有两种单连表:带头节点的和不带头节点~
着都是根据自己的喜好自己加的~
但书上一般是说加上好~
删带头节点的:
{
node *p;
p=head->next;
head->next=p->next;
free(p);
}
删不带头节点的
{
node *p;
p=head;
head=head->next;
free(p);
}
----------------解决方案--------------------------------------------------------
路过,顶一下
----------------解决方案--------------------------------------------------------