数据结构基础概念

概念      

 数据结构研究的是数据如何在计算机中进行组织和存储,使得我们可以高效的获取数据和修改数据。数据结构是以某种特定的布局方式存储数据的容器。这种“布局方式”决定了数据结构对于某些操作是高效的,而对于其他操作则是低效的。首先我们需要理解各种数据结构,才能在处理实际问题时选取最合适的数据结构。

瑞士计算机科学家Niklaus Wirth在1976年写了一本书,名为《算法+数据结构=编程》。40多年后,这个等式仍被奉为真理。

分类

数据结构一般分为三种:线性结构、树结构、图结构。

线性结构:数组、栈、队列、链表、哈希表。。。

树结构: 二叉树、二分搜索树、AVL、红黑树、Treap、Splay、堆、Trie、线段树、K-D树、并查集、哈夫曼树。。。

图结构: 邻接矩阵、邻接表

常用数据结构

1、数组

数组是可以再内存中连续存储多个元素的结构,在内存中的分配也是连续的。

优点:
1、按照索引查询元素速度快
2、按照索引遍历数组方便

缺点:
1、数组的大小固定后就无法扩容了
2、数组只能存储一种类型的数据
3、添加,删除的操作慢,因为要移动其他的元素。

适用场景:
频繁查询,对存储空间要求不大,很少增加和删除的情况。

2、链表

链表是物理存储单元上非连续的、非顺序的存储结构。链表是最简单的动态数据结构。

链表的优点:
链表是动态数据结构,不需要初始化容量,可以任意加减元素。
添加或者删除元素时只需要改变前后两个元素结点的指针域指向地址即可,所以添加,删除很快。

缺点:
因为含有大量的指针域,占用空间较大;
查找元素需要遍历链表来查找,非常耗时。

适用场景:
数据量较小,需要频繁增加,删除操作的场景

3、栈

栈也是一种线性结构。相比数组,栈相应的操作是数组的子集。只能从一端添加元素,也只能从一端移除元素,这一端称为栈顶。栈是一种后进先出的结构 Last In First Out (LIFO)。

适用场景:
无处不在的Undo操作(撤销);
递归功能

4、队列

队列也是一种线性结构,相比数组,队列的操作是数组的子集,只能从一端(队尾)添加元素,从另一端取出元素(队首)。

队列是一种先进先出的数据结构(先到先得)FIFO

适用场景:
因为队列先进先出的特点,在多线程阻塞队列管理中非常适用。

5、树

树是一种天然的组织结构。在日常的应用中,我们讨论和用的更多的是树的其中一种结构,就是二叉树

二叉树是动态数据结构,具有天然的递归结构。

reference:https://blog.csdn.net/yeyazhishang/article/details/82353846

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值