数据结构 链表:怎么在头指针(第0个结点)之后,第一个结点之前插入一个结点,求高手帮助

我编写了一个函数,接收一个结点的指针,在其后面插入一个结点,但是当传给他头指针之后,插入的是第一个结点的后面,不是第0个结点的后面,该怎么改?代码如下:NODE*inse... 我编写了一个函数,接收一个结点的指针,在其后面插入一个结点,但是当传给他头指针之后,插入的是第一个结点的后面,不是第0个结点的后面,该怎么改?
代码如下:
NODE *insert(NODE *p,NODE *head) //在p的后面插入一个结点
{ int i; //循环变量
NODE *q,*x; //q:要插入的结点的指针,x:临时变量
q=(NODE *)malloc(sizeof(NODE)); //为q申请存储空间
x=(NODE *)malloc(sizeof(NODE));
if(q!=NULL&&x!=NULL) //申请成功
{
if(head!=p)
{scanf("%s",q->no);
for(i=0;i<3;++i)
scanf("%d",&(q->sub[i])); //为数据区赋值
x=p->next;
p->next=q;
q->next=x; } //在链表中间插入结点
else
{
q=head;
scanf("%s",q->no); getchar();
for(i=0;i<3;++i)
{scanf("%d",&(q->sub[i]));
getchar();}//为数据区赋值
head=(NODE *)malloc(sizeof(NODE));
head->next=q; //在头指针之后插入结点
}
}
return q; //返回插入结点的指针
}
展开
 我来答
百度网友26ad406
2012-12-10 · TA获得超过1611个赞
知道大有可为答主
回答量:1506
采纳率:100%
帮助的人:1080万
展开全部
怎么这么麻烦你写的,
NODE *insert(NODE *p,NODE *head)
p和head是什么?不是在head后插入么?怎么变成p了?
描述清楚一些,插入节点的数据需要在函数中输入?还是在head后插入p?
追问
我写的这个函数是任意一个结点p后面插入一个结点,后来发现在头指针那又不行,传递p指针和head指针是判断他们是否相等,分类讨论
追答
void insert(NODE *&p)
{
NODE *q=(NODE *)malloc(sizeof(NODE));
//输入数据
q->next=p->next;
p->next=q;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式