关于单链表和双向链表

单链表的定义

由于顺序表的插入删除操作需要移动大量的元素,影响了运行效率,因此引入了线性表的链式存储——单链表。单链表通过一组任意的存储单元来存储线性表中的数据元素,不需要使用地址连续的存储单元,因此它不要求在逻辑上相邻的两个元素在物理位置上也相邻。

  1. 单链表的特点:

 1.单链表不要求逻辑上相邻的两个元素在物理位置上也相邻,因此不需要连续的存储空间。
    单链表是非随机的存储结构,即不能直接找到表中某个特定的结点。查找某个特定的结点时,需要从表头开始遍历,依次查找。

对于每个链表结点,除了存放元素自身的信息外,还需要存放一个指向其后继的指针。

下面代码是单链表的单个节点的描述,以及自定义数据类型

typedef int SLDatatype;
typedef struct SListNode
{
	SLDatatype data;
	struct SListNode* next;
}SLTNode;

对于其增删查改查的操作,本人不在这里花大篇幅放代码并详解,因为本文主要是让大家了解单链表和双链表的优缺点。

单链表的优点:

1、在于它可以在任意位置插入和删除一个数据

2、没有扩容的问题,可以malloc一个节点进行插入

单链表的缺点:

1、在于它以节点为单位存储,不支持随机查找,并且查找起来较为麻烦,需要遍历一遍,所以在平常不经常使用。

2、在进行增删查改时,需要遍历查找目标节点和前一节点,较为麻烦

上图为单链表示意图。

双链表的定义

    双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表

以下代码是双链表的结构,以及自定义数据类型

typedef int LTDataType;//定义自定义类型

typedef struct ListNode//定义结构体
{
	struct ListNode* next;
	struct ListNode* prev;
	LTDataType data;
}LTNode;

 双链表的优点:
1、对结点的删除等操作比单链表便捷,不需要记录前一结点的位置,就可以对目标节点进行增删查改

双链表的缺点:

1、创建和修改节点时较为麻烦,对于不熟练的新手会时常出现链接节点的先后顺序颠倒等问题。

上图为双链表的示意图

单链表和双链表进行比较之后,你会明显的发现双链表更加的方便好用,以至于你会忘记单链表是什么,哈哈哈哈哈。

学习完了单链表再去学习双链表,会友好很多,并且你会发现,双链表和单链表就好比倚天剑和普通铁剑的区别,越发喜欢用双链表。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值