数据结构与算法之栈与队列

栈和队列是线性表中比较特殊的两种数据结构,他们中间是具有线性关系的,就是前驱后继的关系。

一、栈

1、概述

栈是只允许在表尾进行插入和删除操作的线性表,在插入和删除的的一段称之为栈顶,另一端就是栈底,它是先进后出的,如下图就是他的一个典型结构:

 栈同线性表一样,一般包括插入、删除等基本操作。他的实现通常有两种:基于数组的实现(即顺序存储)、基于链表的实现(即链式存储)

(1)栈的顺序存储结构

栈的顺序存储结构其实是线性表顺序存储结构的简化,可以把它称为顺序栈,其存储结构如下:

(2)栈的链式存储结构

栈的链式存储结构,简称链栈。一般将栈顶放在单链表的头部。通常对于链栈来说,不需要头结点。其存储结构如下图:

 二、队列

队列是只允许在一端进行数据插入,另一端进行删除操作的线性表,它是先进先出策略的集合类型,在允许插入的一端称为队尾,允许删除的一端就是队头。同样的,队列具有两种存储方式:顺序存储和链式存储。

(1)队列的顺序存储结构

他与栈是不同的,栈就相当于往一个桶中不断装东西,而队列可以想象成10个排成一个队列按照顺序通过一个地下通道模型,这个地下通道就是对类的内存,这是个人就是里面的数据;队列元素的出列是在队头,即下表为0的位置。为保证队头不为空,每次出队后队列中的所有元素都得向前移动,此时时间复杂度为 O(n)。此时队列的实现和线性表的顺序存储结构完全相同。其结构如下:

 (2)队列的链式存储结构

队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,我们简称为「链队列」。存储结构如下图:

 以上就是栈与队列的一个基本了解;

三、总结

栈与队列,它们都是特殊的线性表,只是对插入和删除操作做了限制。栈限定仅能在栈顶进行插入和删除操作,而队列限定只能在队尾插入,在队头删除。它们都可以使用顺序存储结构和链式存储结构两种方式来实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值