如何在一个链表的链尾插入一个新结点?下面的做法对吗?

如何在一个链表的链尾插入一个新结点?下面的做法对吗?,第1张

student *add(student *head)

{

student *p=new student,*p1, *p2

cin>>p->num>>p->name>>p->eng>>p->math>>p->c

if (head == NULL) // 检查头指针是否为空, 是直接赋值

head = p

else// 否, 则遍历链表找到合适的位置插入新节点

{

p1 = head

while(p1!=NULL)

{

p2 = p1 // 保存当前节点

p1=p1->next // 进入下个节点

}

p1=p // 存储新节点

p2->next=p1 // 将新节点赋值到链尾

}

return head

}

把S结点插入到链表末尾,结果应该是这样的

所要做的工作就是,把F值所在的结点的next指向s结点,并且把s结点的next指向NULL

所以,有以下方法:

1>对应B选项

   把s结点的next指向null即:s->next = '\0'

   把p指针指向F所在的结点,也就是p结点的next指针所指向的结点:p = p->next

   把F所在的结点的next指向s结点;

2>对应C选项

   p指针指向F所在的结点:p = p->next

   s结点的next指针指向p->next,也就是NULL:s->next = p->next

   把F所在的结点的next指向s结点;

3>对应选项D

   这个选项其实和C选项采用的方法是一样的,只不过取值的方式不一样,C选项用指针取值的,而D选项首先把指针的所指向的地址给拿出来,在对其取值,相当于普通变量。所以C选项用的是'->'而D选项用的是'.'

for(int i=0i<pos-1i++)

{

if(ptr->next==NULL)

{

ptr->next=insert

return head

}

else

{

ptr=ptr->next

}

}

insert->next=ptr->next

ptr->next=insert

return head

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7982370.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存