链表和数组队列

一、链表与数组
链表和数组是两种常见的基础数据结构。
链表若干个节点组成,每个节点将包含两部门:数据域和指针域;数据域用来存储数据元素,指针域用来存储下一个节点的地址。数组是除链表外另一常见的基础数据结构,它只鸥一个属性即它的大小。它们都是线形结构,是实现线形表ADT的两种方式。
链表和数组在存储数据时具有一个共同的特点,即所存储的数据必须均为同一类型。链表和数组最大的区别为:在物理结构即在内存中,数组是连续储存的,而链表是非连续的。
这种物理上的特性决定了这两种线形结构在逻辑上的差异。在逻辑上:数组使用时必须预先分配内存,链表在使用时则是按需分配;数组大小一旦确定就不能更改,链表的大小可以自由修改。数组在访问时非常方便迅速,可以看成是基本操作,但若要对一个数组进行插入、删除、增加等操作将会很麻烦,成本将很高;链表在每一次访问时都需要从头节点开始遍历,时间复杂度很高,但是对于链表中每一个节点进行编辑操作就很方便,只需要调整该节点的数据域和指针域即可。因此,在使用这两种数据结构时,应根据实际情况挑选适合的一种。一般对于一旦设定久基本无需更改、访问较多的数据结构采用数组更为理想;对于数据大小不确定或不断变化、编辑操作较多的数据结构采用链表更为理想。
三、链表与数组队列
1.队列:队列是一种特殊的线形表,特殊之处在于它只能在表的两端进行操作,且只能在队列的队尾进行插入,在队首进行删除。那么问题来了,我们的数组队列竟然可以在任意位置进行操作?所以我们这里应该是用数组模拟一个链表。
无论是使用链表还是使用数组,队列都需要具有以下功能:
add()//在队尾添加一个元素
get(int index)//获取制定位置的元素
delete(int index)//删除一个制定位置的元素
insert(int index,要插入元素的类型 要插入的元素)//在制定位置插入一个元素
length()//获取队列的长度
....
2.队列的实现
1)基于链表的实现
在创建链表前,首先必须为它创建一个节点类。节点类包含两个属性:存储的数据、指
向下一节点的指针。
2)基于数组的实现
由于数组大小在设定后是不可变的,所以我们可以定义一个新数组,再将原数组中的数据拷贝到新数组中,这样就模拟出了一个可自由操作的数组。但是需注意,这种方式的时间复杂度很好,当数据量很大时,性能将会很不好。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值