当前位置: 代码迷 >> C语言 >> 我的结果和答案不一样,是我错了吗?
  详细解决方案

我的结果和答案不一样,是我错了吗?

热度:121   发布时间:2007-01-15 19:33:27.0
我的结果和答案不一样,是我错了吗?

题目是要删除单链表的头元素的函数
我的解答是:
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);

我乱写的。..



----------------解决方案--------------------------------------------------------
以下是引用eww在2007-1-15 19:33:27的发言:

题目是要删除单链表的头元素的函数
我的解答是:
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;


----------------解决方案--------------------------------------------------------
以下是引用mayudong1在2007-1-15 21:05:20的发言:

个人认为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);
}
----------------解决方案--------------------------------------------------------
路过,顶一下
----------------解决方案--------------------------------------------------------
  相关解决方案