链表也是一种线性表,区别于顺序表,链表是一种物理上不连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。头指针链表指不带头节点的链表,这样的链表在插入时需要考虑空表的情况,指定位置删除插入时也需要考虑是否在第一个节点处。因为头指针链表的很多操作都需要改变头指针。
下面是关于头指针链表的一些操作的实现。(包括头文件与源文件)
头文件: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;
//头插法
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);
//打印链表
void Display(LinkList *h);
#endif