头节点链表指的是带头节点的链表,这里介绍的是单链表,相比较头指针链表,好处就是插入删除不需要考虑空表的问题,操作不需要改变头指针,不用传二级指针。使用比较方便,也很广泛。
下面是关于头节点链表的一些操作的实现。(包括头文件与源文件)
头文件:LinkList.h
#ifndef __LINKLIST_H__
#define __LINKLIST_H__
#define TRUE 1
#define FALSE 0
typedef int LinkData;
typedef struct _node
{
LinkData data;
struct _node *next;
}LinkList;
//创建链表
LinkList *Create_List();
//头插法
int Insert_Head(LinkList *h,LinkData data);
//尾插法
int Insert_Last(LinkList *h,LinkData data);
//在第Pos个节点处插入,从1开始,没有第0个节点,头节点不算
int Insert_Pos(LinkList *h,int Pos,LinkData data);
//删除第Pos个节点,从1开始,没有第0个节点,头节点不算
int Delete_Pos(LinkList *h,int Pos);
//逆序链表
int Reverse_List(LinkList *h);
// 删除指定数据
int Delete_Data(LinkList *h, LinkData data);
// 查找元素:如果有, 返回元素的位置
int Find_Element(LinkList* h, LinkData data, int *x);
// 获取顺序表中的元素:通过位置获取
int Get_El