| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 389 人关注过本帖
标题:关于删除节点的问题
只看楼主 加入收藏
firewater
Rank: 1
等 级:新手上路
帖 子:47
专家分:4
注 册:2014-7-13
结帖率:87.5%
  问题点数:0  回复次数:1   
关于删除节点的问题
代码如下:
程序代码:
struct student * del(struct student *head, int num)               //定义删除节点的函数
{
    struct student *p1, *p2;
    p1 = p2 = head;
    if (NULL == head)
    {
        printf("链表为空");
    }
    else
    {
        while (p1 -> num != num && p1 -> next != NULL)
        {
            p2 = p1;
            p1 = p1->next;
        }
        if (num == p1 -> num)
        {
            if (p1 == head)
            {
                head = p1->next;
            }
            else
            {
                p2->next = p1->next;
            }
        }
        else
        {
            printf("找不到该学生");
        }
    }
    return head;
}




为什么要返回一个头指针,传递的本来就是一个地址,调用删除节点的函数后,是对原来的链表中的节点进行删除,原来的头指针和现在返回的头指针为什么不同??
我的理解是我个函数传了个指针过去(也就是那个头结点)然后在函数中对这个地址中的链表进行操作,既然都是在一个地址中的操作为什么还要返回一个指针回来?也是就那个头结点。
我明白了啊

[ 本帖最后由 firewater 于 2015-3-18 11:38 编辑 ]
2015-03-17 23:25
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:921
专家分:2531
注 册:2010-2-12
  得分:0 
可能删掉头结点

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2015-03-19 14:49







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

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