单链表(2)

单链表的实现

设计好的结构写在头文件里面。

可以将顺序表的头文件复制到单链表里面,将里面所有的DPSQList替换为List,所有的PS替换为plist,所有顺序表替换为链表。

也就是DPSQList PS换为List plist。顺序表PS换为链表plist。

单链表比较于顺序表,多了个插入中的,在插入函数前的头插和尾插。

在查找key值前面加一个,获取数据结点的个数,也就是获取有效数据的个数。

在链表里面的结点的地址 作用相当于顺序表中的下标,所以其查找的返回类型为Node*。

返回前驱回后继的数据的地址也同理。


typedef struct Node
{
	int data;//结点中的数据域
	struct Node* next;//指向后继数据地址的指针

}Node,*List;//List==*Node


//链表的基本实现操作(常用的),应用操作一般不放在这里面

//可以将链表的复制过来

//初始化
void InitList(List plsit);//Init:初始化。DplsitQList为链表结构体指针数据类型+其定义  的变量,名字为plsit

//头插(插入在头结点后面的第一个有效数据的位置上)
bool Insert_head(List plist,int val);

//尾插
bool Insert_tail(List plist, int val);



//插入数据,在链表plsit的pos位置插入val数据元素
//插入操作有2种结果,插入成功或失败,所以其插入函数原型是bool类型,只返回2种结果
bool Insert(List plsit, int pos, int val);//参数就是实现这个函数的使用需要外界提供给它的数据东西

//判空(判断链表是否为空)
bool IsEmpty(List plsit);

//获取数据结点的个数
int Getlength(List plsit);

//在链表plsit中 查找第一个key值,找到返回key值的结点地址,没有找到返回空NULL
//所以其查找的返回类型为Node*
Node* Search(List plsit, int key);

//删除链表plsit中pos位置的值,删除跟插入一样成功或失败2种结果
bool DelPos(List plsit, int pos);

//删除第一个val的值
bool DelVal(List plsit, int val);

//返回key的前驱地址,如果不存在(key无前驱,在表头)返回NULL
int GetPrio(List plsit, int key);

//返回key的后继下标,如果不存在(key无后继,在表尾)返回NULL
Node* GetNext(List plsit, int key);

//输出链表,不是对链表内部的操作,但为了展示我们对链表的操作是否正确,有时要输出看一下
void Show(List plsit);

//清空链表中的数据
void Clear(List plsit);

//销毁整个链表内存(交回)
void Destroy(List plsit);

你可能感兴趣的:(数据结构)