摘要:单链表的基本操作,由于太久没有复习数据结构了,导致该忘的都忘了,所以在这里记录重新学习数据结构的笔记,以备以后查看。
单链表
链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。
单链表节点定义
1 | typedef struct LNode{ |
此处定义了一个单链表的结构体,里面包含数据以及下一个数据的单链表指针。
创建节点
1 | LNode *create_LNode(ElemType data){ |
此处可以直接传入数据进行创建节点,当创建头节点时可以用NULL进行数据传入;
头插法创建单链表
1 | int create_link_head(LNode *L,ElemType data[],int n){//传入头结点,数组,数组元素的个数 |
tips:
因为是头插法,所以插入后的顺序是数组的倒序。
尾插法创建单链表
1 | int create_link_tail(LNode *L,ElemType data[],int n){ //n为插入的个数 |
获取链表的长度
1 | int get_length(LNode *L){ |
获取链表中指定位置的节点指针
1 | LNode *get_node(LNode *L,int p){ //p的范围是(1~N)不包含头结点 |
获取单链表中data值第一次出现的节点指针
1 | LNode *get_first_elem_node(LNode *L,ElemType data){ |
在指定的节点后插入节点
1 | int insert_elem(LNode *L,int p,ElemType data){ |
删除节点
删除某个下标的节点,并返回被删除的节点的指针
1 | LNode *delete_node(LNode *L,int p){ |
合并表
合并两个元素递增的单链表到一个新的单链表且依然有序
1 | LNode* merge_link(LNode* A,LNode* B,LNode* C){ |
打印单链表
1 | void print_link(LNode *L){ |
完整的函数(包含测试部分)
1 |
|
tips:
在函数中创建的节点要传出才能使用噢