管理进化

数据结构的存储结构有哪些


数据结构的存储结构有以下四种:1.链表 2.数组 3.栈 4.队列

1、链表

创建链表和创建数组不同,不会先划出一块连续的内存,因为链表中的数据并不是连续的,链表在存储数据的内存中有两块区域,一块区域用来记录下一个数据保存在哪里(指向下一个数据的指针)。当有数据进入链表时,会根据指针找到下一个存储数据的位置,然后把数据保存起来,然后指向下一个存储数据的位置。虽然链表是线性表,但是并不会按线性的顺序存储数据。因为链表这种保存数据的方式,所以插入和删除非常容易,读取时比较麻烦。例如:一个链表中0->1->2->3->4这五个内存地址中都存了数据,现在需要往2中插入一个数据,只需要更改1号和2号中记录下一个数据的位置即可,对其他数据无影响。如果想要读取一个数据,需要从0号开始一个一个找,直到找到那条数据为止。

2、数组

java创建数组时,会在内存中划分出一块连续的内存,然后当有数据进入的时候将数据按顺序的存储在这块连续内存中。当需要读取数组中的数据中,需要提供数组中的索引,然后数组根据索引将内存中的数据取出来,返回给读取程序。只有相同类型的数据才可以一起存储在数组中。

所有数据结构都支持几个基本操作:读取、插入、删除

因为数组在存储数据时是按顺序存储的,因为存储内存是连续的,所以寻址读取数据比较容易,插入和删除比较困难。读取数据时,只需要告诉数组从哪个索引读取即可,数组会直接把需要位置的数据取出来。插入和删除比较困难。插入位置后面所有内存中的数据都要往后移一个位置,非常耗时。

3、栈

栈是一种先进后出的数据结构,数组和链表都可以生成栈,当数据进入栈时会按照规则压入到栈底部,再次进入的数据会压到第一次的数据上面。在取出栈中数据的时候会先取出最上面的数据,先进后出。

4、队列

队列是一种先进先出的数据结构,数组和链表也可以生成队列。

队列(queue)和栈是一种操作受限的线性表。栈的操作受限表现在插入和删除只能对栈顶元素进行,删除的元素永远是最新插入的,即操作遵循后入先出(LIFO)原则。队列中的操作原则与栈的相反。删除的元素是最早插入到队列中的,就像排队一样,排在最前面的人将最先从队伍中出列。这样的操作原则常常称作先入先出。所以对于栈和队列的频繁随机插入删除不合适。

智齿客服