【数据结构】双链表详解
双链表详解
1、双链表的概念
双链表就是每个节点既能往后找,也能往前找的链表
· 单链表:
数据→下一个
· 双链表:
前一个←数据→下一个
2、双链表的实现
1.创建三个文件
List.h文件放函数声明
List.c文件实现.h文件中函数功能
test.c文件测试函数功能
函数功能目录 .h文件
#pragmaonce#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<stdbool.h>typedefint LTDataType;//定义双向链表节点的结构typedefstructListNode{ LTDataType data;structListNode* next;structListNode* prev;}LTNode;//声明双向链表中提供的方法//双向链表的初始化voidLTInit(LTNode** pphead);//打印链表voidLTPrint(LTNode* pphead);//不改变哨兵位 因此传一级指针即可voidLTPushBack(LTNode* phead, LTDataType x);//插入数据之前 链表必须初始化到只有一个头节点的情况//头插//将新节点插入到头节点之前 即尾插voidLTPushFront(LTNode* phead, LTDataType x);//链表判断是否为空 bool LTEmpty(LTNode* phead);//尾删voidLTPopBack(LTNode* phead);//头删voidLTPopFront(LTNode* phead);//在pos位置之后插入数据//为什么不传二级 (保持接口一致性)voidLTInsert(LTNode* pos, LTDataType x);// 在pos位置之前插入数据voidLTInsertBefore(LTNode* pos, LTDataType x);//删除指定位置数据voidLTErase(LTNode* pos);//查找 LTNode*LTFind