数据结构:单向链表、双向链表
一、单向链表
(一)链表的查找

(二)链表的修改

(三)尾插法:申请的节点地址赋值NULL


(四)链表的销毁:定义指针pfreenode和指针ptmpnode指向头节点,ptmpnode向后走,然后释放pfreenode指向的节点,最后将pfreenode指向ptmpnode的空间

(五)查找链表的中间节点:满指针走一步快指针走两步

(六)查找链表的倒数第k个节点:快慢指针相差k

(七)不知道头节点地址如何删除链表中间节点:用下一个节点覆盖要删的节点,然后删除下一个节点

(八)链表的倒置:将头节点断开,其他元素用头插法插入即可

(九)链表的排序
1.冒泡排序:定义两个指针,相邻元素比较,大的往后排。ptmpnode2为NULL,即等于pend,循环结束,pend赋值为ptmpnode1的节点地址。


2.选择排序


(十)判断是否有环、计算环长、找到环入口

1.判断是否有环:定义两个指针一个快指针每次走两步,慢指针每次走一步。快指针-慢指针==环长,即相遇。快指针和慢指针相等即链表有环


2.计算环长:定义一个指针从相遇点走一圈,计数即可得到环长

3.找环入口:定义两个指针一个从相遇点走,一个从开始走,相遇位置即为环入口位置

二、双向链表(参考单向链表)
(一)节点定义

(二)创建

(三)链表的头插法

