数据结构

问:你知道数据结构吗?
我:?...

  1. 到底什么是数据结构?
    我查了一下,数据结构就是以某种特定的布局方式存储数据的容器。转成人话就是,储存数据的方式或者结构。
  2. 为啥要有数据结构这个概念
    原因就是,不同的数据结构,对于不同的数据操作有不同的操作有不一样的效率。
    也就是选择不同的数据结构就是为了提高对数据的某种操作效率。
  3. 常见的数据结构有
    数组、栈、队列、链表、树、堆、散列表、图 8种。

    数组:
    数组说一种很常见的数据结构,数组里面的每一个元素关联着一个索引(从0开始的自然数),
    我们可以通过找到数组里面的某个元素,而且索引表明了元素在数据中的位置。
    数组一般有一维数组和多维数组。
    数组还有一个数组长度属性,用js的语法说明就是 数组都有length属性。
    
    数组操作一般有:
    Insert(增): 往数组指定位置插入元素;
    Get(查):通过索引找到数组中指定位置元素的值
    Delete(删除): 删除数组中指定位置的元素
    Length(长度): 查询数组所有元素的数量
    update(改): 根据所以,修改指定元素的值(很多文章没讲这个,但是js是有这样的操作,我要查一下,
    我也不太确定这个改是否有,应该有update才对的)
    
    数组优点:
    1.可以根据索引快速找到元素
    2.可以很方便的根据索引遍历整个数组
    
    数组缺点:
    1.数组的大小固定后就无法扩容(这句话用js的数组去理解,是不行的)
    2.数组删除慢
    3.根据值去查找数组中的元素,慢(遍历,对比,找索引)
    
    数组还分有序数组和无序数组。(这两个的区别,我需要再查查资料消化一下,后续补上)

栈:
画了个图:
数据结构

栈就是个像杯子一样的东西,只有一个口,出和进都只能通过这个口。
栈操作特点就是,先进后出。
所以,栈应用场景是类似于 递归这种功能。

队列:

队列类似于管道一样的东西。有指定的入口和指定的出口,而且管道的出口和入口是不能变的。
就像家里的水龙头那个管道,进水口和出水口都是固定不变的。
队列的特点就是,先进先出,在多进程阻塞队列管理中非常适用。
队列的缺点也比较明显,找后进的元素效率很低。

链表:这个本人还没理解透,后续再补上

相关推荐