算法竞赛宝典(第三部):基础数据结构
上QQ阅读APP看书,第一时间看更新

结点的删除

例如下面这个链表:

(A)→(B)→(C)→(D)→(E)→…→NULL

因为链表中唯一能够找到元素的办法是通过它上一个元素的指针,所以如果我们将某个元素直接删除,这个元素所指向的元素和它之后的所有元素都没有办法再找到了,为了解决这个问题,一般采取这样的办法:记录下要删除的元素之前的那个元素,在删除元素之前,把这个元素的指针指向要删除的那个元素指针指向的元素,比如说现在要删除这个链表的元素B,先找到它之前的元素A,在删除B之前将A的指针指向C,然后再删除B,这样在删除B之前,就已经把B从链表里面剔了出来,如图1.2所示。

图1.2

上面的例子中操作符free用来删除一个变量,即在内存中释放某个变量所对应的地址,使得之后系统可以利用这块内存做别的事情,这样比较节省内存空间。我们应养成及时释放无用的内存空间的好习惯。