湛江网站建设方案推广,济南网站建设(力选聚搜网络),装饰网站设计模板下载,软件商店下载安装2023版本最新双向链表也叫双链表#xff0c;是链表的一种#xff0c;它的每个数据结点中都有两个指针#xff0c;分别指向直接后继和直接前驱。所以#xff0c;从双向链表中的任意一个结点开始#xff0c;都可以很方便地访问它的前驱结点和后继结点。而之前的单链表为单向链表#xf… 双向链表也叫双链表是链表的一种它的每个数据结点中都有两个指针分别指向直接后继和直接前驱。所以从双向链表中的任意一个结点开始都可以很方便地访问它的前驱结点和后继结点。而之前的单链表为单向链表双向链表也就是在单链表的结点中增加一个指向其前驱的pre指针。 如图 这里介绍双向链表的常用操作 l 创建双向链表 l 销毁双向链表 l 清空双向链表 l 获取表长度 l 把node插入pos位置 l 获取pos位置的元素 l 删除pos位置的元素 l 删除表中与node相同的元素删除第一个匹配成功的 l 重置游标 l 返回游标所指向的结点 l 游标后移 l 游标前移 代码总分为三个文件 DLinkList.h 放置功能函数的声明以及表的声明表结点的定义 DLinkList.c 放置功能函数的定义以及表的定义 Main.c 主函数使用功能函数完成各种需求一般用作测试 整体结构图为 这里详细说下插入操作和删除操作 插入操作 如图 插入元素方法 判断表和插入位置是否合法 由表头开始通过next域移动pos次后当前元素的next域为要插入的位置 Current的next域指向node Node的next域指向next 判断是否为尾插如果不是的话next的pre域指向node 判断是否为头插如果是的话node的pre域指向NULL 如果之前表为空表则游标指向插入的结点 表长度加1 删除操作 如图 删除元素方法 判断表和插入位置是否合法 由表头开始通过next域移动pos次后当前元素的next指向的元素为要删除的元素 把current的next域指向next 判断是否为尾插如果不是的话next的pre指针指向current 如果不是尾插且是头插的话next的pre指针指向NULL 如果删除的结点正好游标也指向它则游标后移 表长度减1