链表操作小技巧:
(1)指针传入,申请空间要判断是否为空
(2)插入删除操作从头结点开始,需要改变的节点是操作节点的前一个节点
(3)正常操作遍历链表,借助参数k来判断位置,遍历时不要忘记 t = t ->next
- 链表的初始化(实质是初始化头结点)
- 链表的插入
- 链表的遍历
- 链表的长度
- 指定位置查找元素
- 指定元素查找位置
- 指定元素查找前驱
- 指定元素查找后继
- 删除节点
- 逆序链表
- 清空链表(实质是删除除头结点以外的所有节点)
- 释放链表
面试题:一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指向的节点?
答:将这个指针指向的next节点值copy到本节点,将next指向next->next,并随后删除原next指向的节点
所以设指向待删除节点的指针为p,设其后节点为q;
q=p->next;
temp = q->data;
q->data = p->data;
p->data = temp;
p->next = q->next;
free(q);