双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。
1、头文件(dilst.h)
#pragma once
//带头结点的双向链表(非循环)
typedef struct DNode
{
int data;//数据域
struct DNode *next;//后继指针
struct DNode *prio;//前驱指针
}DNode,*DList;
//初始化双向链表
void InitDList(DList plist);
//头插
bool Insert_head(DList plist,int val);
//尾插
bool Insert_tail(DList plist,int val);
//查找
DNode *Search(DList plist,int key);
//删除
bool Delete(DList plist,int key);
//获取长