| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 499 人关注过本帖
标题:链表删除节点的问题
只看楼主 加入收藏
FireRabbit
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-8-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
链表删除节点的问题
其他的节点可以删除,但是目标在头结点时,就会有错误,弹错并且显示了一个垃圾值-57......,到底哪里错了呢?
局部代码如下:
程序代码:
struct Date
{
    int num;      
    struct Date *next; 
};
void Dellink(struct Date *head)
{
    struct Date *p1,*p2;
    int n;
    printf("请输入需要删除的节点num的值:");
    scanf("%d",&n);
    for(p1=head,p2=NULL; p1!=NULL&&p1->num!=n; p2=p1,p1=p1->next)
        ;
    if(p1==NULL)
    {
        printf("没有找到%d。\n",n);
        return 0;
    }
    if(p2==NULL) //问题大概出在这里
        head=head->next;
    else
        p2->next=p1->next;
        free(p1);
}


[ 本帖最后由 FireRabbit 于 2014-9-26 13:32 编辑 ]
2014-09-25 22:35
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:20 
删除头结点不就整个链表都丢失了,除非你事先把首元结点储存起来
2014-09-26 00:25
FireRabbit
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-8-6
收藏
得分:0 
回复 楼主 FireRabbit
    if(p2==NULL)
         head=head->next;

并非是直接删除头结点,而是把头结点改为下一个节点,之后再删除原来的头结点。

我的愿望是用C++开发自己的游戏引擎。
在此之前还有许多东西要学……
2014-09-26 12:15
bobo2185355
Rank: 2
等 级:论坛游民
帖 子:81
专家分:43
注 册:2010-4-11
收藏
得分:0 
是否要判断
 if(!head->next)
    head=head->next;
2014-09-26 13:08
FireRabbit
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-8-6
收藏
得分:0 
回复 4 楼 bobo2185355
不行,结果直接弹错了

我的愿望是用C++开发自己的游戏引擎。
在此之前还有许多东西要学……
2014-09-26 13:26
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
这个逻辑上没有错误呀,怎么会报错呢; 函数时空类型 return语句应该不带返回值的
2014-09-26 23:56
FireRabbit
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-8-6
收藏
得分:0 
回复 6 楼 风车转风车 89
已经找到错误了,head = head->next;这一句是错的,因为无法通过形参改变实参的值。

我的愿望是用C++开发自己的游戏引擎。
在此之前还有许多东西要学……
2014-09-27 09:44
FireRabbit
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-8-6
收藏
得分:0 
回复 2 楼 soulmate1023
从结果来说,你是正确的……

[ 本帖最后由 FireRabbit 于 2014-9-27 10:17 编辑 ]

我的愿望是用C++开发自己的游戏引擎。
在此之前还有许多东西要学……
2014-09-27 09:44
快速回复:链表删除节点的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012474 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved