永发信息网

数据结构——链表删除结点的问题。

答案:4  悬赏:20  手机版
解决时间 2021-03-01 04:33
数据结构——链表删除结点的问题。
最佳答案
同学你好:我看了你的程序:注释了你看一下;最主要的错误时没有释放你删除的节点,
再有每次你都要从首节点开始遍历查找所以,p1要始终指向首节点
希望你能采纳
void Delete(struct Student *Head,int num)
{
struct Student *p1,*p2;
if(Head->Next=NULL)//Head->Next == NULL ;是这里错了
printf("该表是空表!");//空表
p1=Head->Next;
if(p1->Number==num)
Head->Next=p1->Next;//删除链表第一个数据

free(p1);//要释放到你删除的节点,否则会造成内存泄露
p1 = Head->Next;//让p1继续指向第一个有效节点

while(p1->Next!=NULL)
{
p2=p1;
p1=p1->Next;
}
if(p1->Number==num)
p2->Next=NULL;//删除链表最后一个数据

free(p1);//要释放到你删除的节点,否则会造成内存泄露
p1 = Head->Next;//让p1继续指向第一个有效节点

while(p1->Next!=NULL)
{
p2=p1;
p1=p1->Next;
if(p1->NUmber==num)
p2->Next=p1->Next;

free(p1);//要释放到你删除的节点,否则会造成内存泄露

break;//删除中间的数据
}
}
全部回答
p1要始终指向首节点
if(Head->Next=NULL)
printf("该表是空表!");//空表
else
{
p1=Head->Next;
if(p1->Number==num)
Head->Next=p1->Next;//删除链表第一个数据
while(p1->Next!=NULL)
{
p2=p1;
p1=p1->Next;
}
if(p1->Number==num)
p2->Next=NULL;//删除链表最后一个数据
while(p1->Next!=NULL)
{
p2=p1;
p1=p1->Next;
if(p1->NUmber==num)
p2->Next=p1->Next;break;//删除中间的数据
}
}
按照你传入的参数来看,你的实现的功能是在链表当中删除Number的值为num的结点,但是你的第一个循环只是做了遍历,并没有判断是否相等的相关操作,而且,一般删除结点的操作不仅仅是要把它从链表里拿掉,还要释放掉这个结点的空间。下面的代码是在你的代码的基础上改的,只删除了一个结点,如果你要删除所有值为num的结点的话,也只要改动一点点就行了
void Delete(struct Student *Head,int num)
{
struct Student *p1,*p2;
if(Head->Next=NULL)
 {
  printf("该表是空表!");//空表
   return ;
}
p1=Head->Next;
if(p1->Number==num)
{
Head->Next=p1->Next;//删除链表第一个数据
free(p1);
return ;
}
while(p1 !=NULL)
{
if (p1->Number == num)
{
p2->next = p1->next;
free(p1);
return ;
}
p2=p1;
p1=p1->Next;

}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
昆山博鑫远美的专营店在哪里啊,我有事要去这
新恒隆瓷砖和盈邦瓷砖哪个好
祥圆宾馆这个地址在什么地方,我要处理点事
大腿内侧长了一个小肉球像一个袋子底部细上面
梦幻90级抓鬼十个能得多少钱和经验
怎么开通农行短信提醒
重庆特驱家禽养殖公司地址在哪,我要去那里办
唐朝有哪些信用形式和信用机构
小写,5字是怎么写的有图
太原科技大学晋城的环境科学和环境工程一样吗
把一块棱长10厘米的正方体铁块,锻造成宽5厘米
中国银行办卡时给的最新的客户回单是什么样的
银辉超市(永兴路)在什么地方啊,我要过去处理
蓝屏时如何重装系统
手机分期店可以和几家分期公司合作 要是顾客
推荐资讯
水光面膜如果防伪查出是正品就一定是正品吗
石围仔地址在什么地方,想过去办事
我想知道老婆是多眼皮老公是双眼皮生出的小孩
广东万景泓不锈钢技术开发有限公司这个地址在
请问,帮帮我!!!进不了游戏呀!!!,我的帐
品香源过桥米线在什么地方啊,我要过去处理事
【purpose】aim,purpose,goal的区别
不再暴露附近友军伤害的目标 是什么意思
南昌市东湖区有几个办理交通违章点
赛普佳旅店地址在哪,我要去那里办事
两点水加个口怎么读
福瑞佳鲜奶吧大港店怎么去啊,有知道地址的么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?