常用的数据结构

链式结构(链表)

非连续、非顺序的存储结构。由若干个结点组成,结点包含数据域和指针。能够快速的添加删除元素。在进行遍历的时候只能从头节点向尾结点顺序遍历,所以在进行for循环遍历的时候速度慢。结点中存在指针域,所以导致空间开销较大。
1、单向链表,结点包含数据域(data)和指针(next),head指针指向头结点,最后一个指针指向NULL。带头结点链表的头结点只有一个指针,数据域没有值,不带头结点链表的头结点数据域是有值的,所以不带头结点链表再插入数据时需要改变头结点的数据域。
在这里插入图片描述
2、双向链表,结点包含一个数据域和和两个指针,一个next,指向下一个结点,一个prev,指向上一个结点。第一个prev指针和最后一个next指针分别指向空,在进行遍历的时候可以从前向后遍历也可以从后向前遍历。
在这里插入图片描述

顺序结构(顺序表)

一般基于数组实现,查询效率较高,增删效率低。

队列

是一种特殊的线性表,只允许在前端(队头)删除,后端(队尾)插入,所以先进入的队列元素才能先删除,所以队列的特点是先进先出。
1、顺序队列,首先申请一片连续的存储空间,设置两个指针进行管理。一个队头指针front指向队头元素,一个队尾指针rear指向下一个元素即将插入的位置。
在这里插入图片描述
在队尾插入元素rear指针会+1,在队头删除元素front指针会+1,随着进列出列的进行rear=front,此时队列中没有元素,称为空队列。顺序队列又产生溢出现象,包括"下溢",队列为空时出队操作,是一种正常现象;“真上溢”,队列满时入队操作,是错误状态;“假上溢”,在出队入队的操作中,front和rear不断增大,致使被删除的空间永远无法利用,当队列中的实际元素个数远远小于队列的空间规模或尾指针超越队列空间规模而不能做入队操作。
2、循环队列,为了能够让队列空间可以重复使用,当front+1或rear+1超出队列空间的规模时,让front指针或rear指针执行队列的起始位置。当队列为空和队列满时,front=rear,为了区分这两种情况,循环队列的空间规模为MaxSize-1。所以循环队列为空时front=rear,队列满时,front=(rear+1)%MaxSize。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值