程序员需要了解系列:数据结构

本文深入讲解了栈、队列、链表和二叉树等基本数据结构的特点与应用。栈遵循后进先出原则,队列则为先进先出,两者无需指定元素地址。链表适合高效添加和删除,而二叉树检索效率高,皆源自内存操作优化。

关于栈和队列:

栈(stack)

一种很重要的数据结构,栈采用 LIFO(Last In First Out)即后入先出的方式对内存进行操作**。它就像一个大的收纳箱,你可以往里面放相同类型的东西,比如书,最先放进收纳箱的书在最下面,最后放进收纳箱的书在最上面,如果你想拿书的话, 必须从最上面开始取,否则是无法取出最下面的书籍的。

栈的数据结构就是这样,你把书籍压入收纳箱的操作叫做压入(push),你把书籍从收纳箱取出的操作叫做弹出(pop)

队列

队列和栈很相似但又不同,相同之处在于队列也不需要指定元素的地址,不同之处在于队列是一种 先入先出(First In First Out) 的数据结构。队列在我们生活中的使用很像是我们去景区排队买票一样,第一个排队的人最先买到票,以此类推,俗话说: 先到先得。

队列的实现一般有两种:顺序队列 和 循环队列。
循环队列一般是以环状缓冲区(ring buffer)的方式实现的,它是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。

链表

下面我们来介绍一下链表和 二叉树,它们都是可以不用考虑索引的顺序就可以对元素进行读写的方式。通过使用链表,可以高效的对数据元素进行添加 和 删除操作。而通过使用二叉树,则可以更高效的对数据进行检索。

链表的添加不涉及到数据的移动,所以链表的添加和删除很快,而数组的添加涉及到数据的移动,所以比较慢,通常情况下,使用数组来检索数据,使用链表来进行添加和删除操作。

二叉树
二叉树也是一种检索效率非常高的数据结构,二叉树是指在链表的基础上往数组追加元素时,考虑到数组的大小关系,将其分成左右两个方向的表现形式。

二叉树是由链表发展而来,因此二叉树在追加和删除元素方面也是同样有效的。这一切的演变都是以内存为基础的。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值