【初阶数据结构】实现带哨兵位的的双向循环链表

1.认识双链表

双链表的全称一般为带哨兵位的双向循环链表,有如下两个优点:

1)哨兵位的存在可以使增、删、查、改等操作的代码实现过程更加统一。

1)单链表无法找到前驱节点,双链表则更加灵活,可以访问前驱和后继节点。


2.代码实现

2.1 创建文件

DoubleLinkedList.h包含头文件,函数的声明。

DoubleLinkedList.c函数功能的具体实现过程。

Test.c测试函数功能的实现。

2.2 创建双链表

DoubleLinkedList.h

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

//使用typedef重命名类型——提高链表的通用性
typedef int SLDataType;
/*本文是实现存储整形数据的顺序表,如果想利用现有的顺序表代码逻辑存储其他数据,
只需要将这里的int改为对应的数据类型名称,而不需要去具体过程中更改*/

//定义双向链表中节点的结构
typedef struct ListNode 
{
	LTDataType data;
	struct ListNode* prev;
	struct ListNode* next;
}LTNode;

2.3 初始化双链表 

双链表是带有哨兵位的,插入数据之前链表中必须要先初始化一个哨兵位。

2.3.1 第一种初始化方式

需要传参,并且因为需要改变哨兵位的指向,所以需要传二级指针,因为哨兵位本身就是一个指针,需要使用指针的指针即二级指针才能在其他函数中修改哨兵位。

Doub

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值