嵌入式学习——链表相关代码补充
删除指定的值
需要两个指针,一个指针来找需要被删除的节点,另一个指针在该指针的前一个位置
销毁链表
每个节点都删除,逐个释放,当指针指向空说明有效的节点数据已经被释放完,之后再释放头节点,最后将头节点指针给NULL,防止出现悬空指针。

找链表的中间节点
需要两个指针,一个快指针,一次走两步;一个慢指针,一次走一步。当链表个数为奇数个,快指针为NULL,当偶数个时,快指针指向NULL,这时慢指针的位置就是中间位置。

找倒数第k个节点
需要两个指针,指针p1先走k步,然后两个指针p1和p2同时往后走一步,当指针p1为NULL时,此时p2就是要找的位置。

判断链表是否有环
需要两个指针,一个快指针,一个慢指针,快指针走的步数比慢指针多就行。我们假设快指针先走两步,如果快指针不为NULL并且快指针不指向NULL,那么两个指针同时往后走一步,走的过程中,如果他们相遇,就说明有环,否则就没有。

链表的倒置
先将链表分为空链表和无头链表,再将无头链表中的节点依次通过头插法插入到空链表中。

next移动和插入的顺序不能颠倒。











