本次我们学习的是单链表的增删改查,接下来我们根据图片来慢慢展开!
1、头添加、尾添加
如图中所示一般,三格的是链表,后面的两格高的是节点。head为头节点,tail为尾节点,cnt为节点数。我们知道头添加有两种情况,一种是链表里没有节点,还有一种是链表里已经存在节点。
如图:
所以我们可以很简单的写出头节点的添加
创建一个节点node,然后用node节点的指向域next连接原头节点的数据域data,再将链表head与node节点数据域连接,头节点添加完成,判断cnt是否为0,若是,则需要将node节点中的指向域与链表tail相连。
接下来是尾节点的添加
同样的是我们也要判断节点数是否为0 ,如果没有的话,那我们可以直接添加,将head与tail和node相连接;如果有的话,根据结构图我们可以看到要将tail节点中的next与node连接,再将tail与node连接。
2、头删除、尾删除
头删除:先上图分析
图中我已经画出了情况展示,不过我们还是要先判断,如果没有节点那就没有可以删除的东西嘛,所以也就不运行,存在的话我们就要用指针去复制一次头节点,若是不用指针直接删除会导致后继节点找不到了。
先用temp指针存储头节点信息,再将head与原本第二的节点连接,最后释放temp。
尾删除:先上图
直接上代码,首先判断是否有节点,没有节点直接不运行程序,若是只有一个节点,释放掉该节点,然后将head,tail置空,剩下只有一种情况,有两个及以上节点。
两个以上的情况我们需要先创建一个指针从头节点开始遍历往后走,走到尾节点前一个节点时,释放掉尾节点
今天的分享到此!