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