单向链表的常用12种函数源码:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
/*
单向链表(头节点不带数据):
单向链表对于单向循环链表而言操作差别不大,单向循环链表初始化头节点的时候需要
让自己的next指向自己(head->next=head),遍历的时候需要更该遍历条件即可(p->next != head)
数据结构中,链表需要重点掌握的是单向链表,和双向循环链表
*/
typedef int DATATYPE; //为int起别名为 DATATYPE
typedef struct STUDENT //定义单向链表的结构体类型
{
DATATYPE number; //数据域 可以是多个可以是一个 也可以是结构体类型
struct STUDENT *next; // 指针域
}STU, *Link;
//函数声明部分 常用的
Link init_head(void); //初始化单链表的头节点
Link creat_node(DATATYPE n); //创建单链表的结点
void insert_head(Link head, Link new_node); //头插法插入结点
void insert_tail(Link head, Link new_node); //尾插法插入结点
bool is_empty(Link head); //判断单向链表是否为空
void display(Link head); //遍历单链表
Link found_node(Link head, int n); //根据元素查找结点
void deleate_node(Link head, int n); //根据元素删除一个结点
bool update(Link head, int old_date, int new_date); //根据元素修改元素结点
void clean_link(Link head); //清空链表
Link remove_node(Link head, int n); //根据元素取出结点
void move_node(Link head, int goal, int next); //移动结点 将值为goal的结点放到值为nex