C++编程入门(二) 互动版

删除链表节点

这一节我们先把链表删除的情况列举出来,同学们根据提示,自己编写链表删除的代码,作为练习题哦。

删除链表节点的函数deleteList,应该有两个参数,一个是链表的头指针,一个是要删除的节点的学号。返回值是链表的头指针。首先要根据学号进行对比,找到要删除的节点,另外注意要将待删除节点delete掉,避免程序内存溢出的发生。例如指针p指向待删除节点,则要有delete p;

待删除的节点有两种情况,如下图:

首先,对比head->id与参数的学号,若相同,则是第一种情况。这种情况,首先要让指针p指向删除的节点,然后让head指向下一个节点,最后delete 掉p即可。再加一行return head就圆满了。

待删除节点不是第一个节点话,就要用循环进行查找了,这里参照插入功能的查找。最终指针p指向待删除节点,q指向待删除节点的前一个节点。然后操作就简单明了了,如果p为空,说明没找到这个学号的学生,用cout向用户说明下这个情况。如果p不为空也好办,把p的next指针赋值给q的next指针,这样链表不就跳过p指向的节点了吗。然后delete掉p,再return head就圆满了。

在右侧代码框中编写程序:实现删除链表节点的函数。