数据结构—单链表的定义与基础操作

一.单链表的定义

1.存储结构:链式存储

2.链式存储结构:把数据元素存储到连续或不连续的内存中。

3.单链表:由一个指针域和一个元素域组成一个结点,指针域的指针指向下一个结点的存储地址。(1)带头结点:头结点是一个空结点,元素域为空。plist->head->next是第一个结点

(2)不带头结点:head 是一个指针,没有元素域,指向第一个结点。plist->head是第一个结点。

4.特点:存储地址可以相邻也可以不相邻。便于插入和删除。

  <1>带头结点结构          数据结构—单链表的定义与基础操作_第1张图片

  <2>不带头结点结构

 数据结构—单链表的定义与基础操作_第2张图片

 二.单链表的基础操作(不带头结点)

  2.1结构体设计

   数据结构—单链表的定义与基础操作_第3张图片

 2.2 不带头结点初始化
void InitList(LinkList* plist);

数据结构—单链表的定义与基础操作_第4张图片

  带头结点初始化

数据结构—单链表的定义与基础操作_第5张图片
2.3 清空链表元素  将有效结点删除
void Clear(LinkList* plist);

数据结构—单链表的定义与基础操作_第6张图片
2.4销毁  清空+删除头节点
void Destory(LinkList* plist);

数据结构—单链表的定义与基础操作_第7张图片
2.5 判空 
bool IsEmpty(LinkList* plist);

数据结构—单链表的定义与基础操作_第8张图片
2.6头插
bool InsertHead(LinkList* plist, ElemType val);

数据结构—单链表的定义与基础操作_第9张图片
2.7 尾插
bool InsertTail(LinkList* plist, ElemType val);

数据结构—单链表的定义与基础操作_第10张图片
2.8 指定位置插入 删除有效结点
bool InserPos(LinkList* plist, int pos, ElemType val);

数据结构—单链表的定义与基础操作_第11张图片
2.9头删
bool DeleteHead(LinkList* plist);

数据结构—单链表的定义与基础操作_第12张图片
2.10 尾删
bool DeleteTail(LinkList* plist);

数据结构—单链表的定义与基础操作_第13张图片
2.11 按位置删除
ElemType DeletePos(LinkList* plist, int pos);

数据结构—单链表的定义与基础操作_第14张图片
2.12 删除指定元素的结点
bool DeleteVal(LinkList* plist, ElemType val);

数据结构—单链表的定义与基础操作_第15张图片
2.13 获取指定结点的前驱结点
ListNode* GetPrevNode(LinkList* plist, ElemType val);

数据结构—单链表的定义与基础操作_第16张图片
2.14 获取指定结点的后继结点
ListNode* GetNextNode(LinkList* plist, ElemType val);

数据结构—单链表的定义与基础操作_第17张图片
2.15 删除指定结点的前驱结点
bool DeletePrevNode(LinkList* plist, ElemType val);

数据结构—单链表的定义与基础操作_第18张图片
2.16 删除指定结点的后继结点
bool DeletNextNode(LinkList* plist, ElemType val);

数据结构—单链表的定义与基础操作_第19张图片
2.17 打印
void Show(LinkList* plist);

数据结构—单链表的定义与基础操作_第20张图片

你可能感兴趣的:(数据结构,c语言,链表)