关于删除节点的问题
											代码如下: 程序代码:
程序代码: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 编辑 ]

 
											





 
	    


