上大学以及博客复活后的第一篇博文,写点简单的吧,也算纪念一下。
单链表的节点声明
单链表中的节点使用结构体来定义,每个节点包含数据域和指针域。数据域保存节点信息,指针域保存下一节点的地址。
1 | typedef struct Node |
单链表的建立
单链表的建立有头插法和尾插法两种,除了建成后数据顺序不同之外没啥区别。创建单个节点时,使用malloc函数申请新空间。
1 | //头插法 |
单链表的插入
没啥特殊的······直接看代码吧
1 | void insert(node_p l,int n,node_p p) //在第n个节点后插入p节点 |
单链表的删除
先找到被删节点的前一个节点,将其指针域指向被删节点的下一个节点,再释放被删节点。
1 | void del(node_p l,int n) //删除第n个节点 |
单链表的就地逆置
所谓就地逆置,就是再不改变物理储存位置的前提下将链表逆置。
基本思路为:分别用$p,q$两个指针指向第$i,i+1$个节点,然后让$q$指向$p$。这时需要让$p,q$依次后移一个节点,而因为$q$指向了$p$,所以$q$与后续节点的联系就断了,那么就需要用另一个指针保存$q$的后续节点的位置,即$o=q->next$。然后就可以借助$o$完成$p,q$的依次后移。
1 | node_p turn(node_p l) |