首页 > 其他分享 >栈、队列和数组有哪些主要区别

栈、队列和数组有哪些主要区别

时间:2024-08-06 13:27:25浏览次数:25  
标签:插入 哪些 队列 元素 访问 数组 操作

1、数据存储和访问原则

栈(Stack):
存储原则:后进先出(LIFO,Last In First Out)。即最后加入的元素最先被移除。
访问方式:只能访问栈顶元素。栈的插入(push)和删除(pop)操作都只能在栈顶进行。

队列(Queue):
存储原则:先进先出(FIFO,First In First Out)。即最早加入的元素最先被移除。
访问方式:队列的插入操作(enqueue)在队尾进行,删除操作(dequeue)在队首进行。可以访问队首和队尾的元素,但通常不直接访问队列中间的元素。

数组(Array):
存储原则:元素在内存中连续存储,通过索引进行访问。
访问方式:随机访问。可以通过索引在常数时间内访问数组中的任意元素。

2、 数据操作

栈:
主要操作:push(入栈)、pop(出栈)、peek(查看栈顶元素但不移除)、isEmpty(判断栈是否为空)、size(获取栈的大小)。

队列:
主要操作:enqueue(入队)、dequeue(出队)、front(查看队首元素但不移除)、rear(查看队尾元素,但并非所有队列实现都提供此操作)、isEmpty(判断队列是否为空)、size(获取队列的大小)。

数组:
主要操作:通过索引进行元素的插入、删除、访问、遍历等。数组的大小在初始化时确定,一旦创建,其大小不能改变(尽管有些编程语言提供了动态数组的实现,如Java的ArrayList,但这在底层可能是通过数组扩容等方式实现的)。

3、应用场景

栈:
常用于需要后进先出操作的场景,如函数调用、括号匹配、浏览器历史记录、撤销操作等。

队列:
常用于需要按先后顺序处理数据的场景,如任务队列、打印机队列、消息队列、广度优先搜索(BFS)等。

数组:
适用于需要频繁访问元素、对内存空间要求较小的场景。由于数组在内存中是连续存储的,因此可以通过索引快速访问任意位置的元素。但是,数组的插入和删除操作可能会涉及大量元素的移动,因此在需要频繁进行插入和删除操作的场景下,数组可能不是最佳选择。

4、性能特点

栈和队列:
在大多数情况下,栈和队列的插入、删除和访问操作都可以在O(1)时间复杂度内完成,因为它们通常只涉及栈顶或队首、队尾的操作。

数组:
访问操作的时间复杂度为O(1),因为可以通过索引直接访问。但是,插入和删除操作的时间复杂度可能较高,特别是当需要在数组中间插入或删除元素时,可能需要移动大量元素。

标签:插入,哪些,队列,元素,访问,数组,操作
From: https://blog.csdn.net/qq_39311377/article/details/140896248

相关文章

  • 栈、队列和数组的具体实例
    1、栈的具体实例1、自助餐厅的托盘:在自助餐厅中,托盘通常被堆叠在一起,顾客从顶部取出一个托盘,然后服务员会在底部补充一个新的托盘。这个过程体现了栈的后进先出(LIFO)特性。2、网页浏览器的历史记录:当你在网页浏览器中浏览网页时,浏览器会将你访问的网页地址保存在一个栈中......
  • Queue 队列 -- C语言实现 -
    队列队列的概念队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特点FIFO(FirstInFirstOut)入队:进行插入操作的一端称为队尾出队:进行删除操作的一端称为队头链实栈代码实现Ququq.h#pragmaonce#define_CRT_SECURE_NO_WARNI......
  • 算法工程师应当了解哪些算法?标准很乱啊
    Hereisamorestrictlycategorizedlistofalgorithms,withbriefexplanationsforeachcategory:1.SortingAlgorithmsQuickSort:Efficientsortingbypartitioningarraysaroundapivot.MergeSort:Divide-and-conquersortingthatmergessortedsubarr......
  • 「队列」实现FIFO队列(先进先出队列|queue)的功能 / 手撕数据结构(C++)
    概述队列,是一种基本的数据结构,也是一种数据适配器。它在底层上以链表方法实现。队列的显著特点是他的添加元素与删除元素操作:先加入的元素总是被先弹出。一个队列应该应该是这样的:--------------QUEUE-------------———————————......
  • 免费外文文献翻译软件有哪些?它们带给你更高效率的阅读体验
    对外国文学作品感兴趣的朋友们,是不是常常被语言不通的问题困扰呢?大家明明与文献近在咫尺,但却被那些陌生的词汇所阻挡在外,导致无法领略文献背后的故事和情感,这种感觉实在是令人沮丧。这时大家想必很需要一款实用的文献翻译软件吧?不用急,下面马上将五款高效率工具奉上!翻译工......
  • 外文文献翻译工具使用方法有哪些?先来试试这几种方法
    谁没有为论文拼过命呢?且不说后期的查重和格式规范调整工作,论文撰写前的资料收集就够大家“喝一壶”的了~要是碰上一些用外语撰写的文献,那大家就更难做到快速把握文献的核心观点和数据了。这时要是有办法能够轻松完成文献的翻译,那可就方便多啦!下面我就送上几种便捷的翻译方法......
  • 数据结构 Queue 队列 -- C语言实现
    队列队列的概念队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特点FIFO(FirstInFirstOut)入队:进行插入操作的一端称为队尾出队:进行删除操作的一端称为队头链实栈代码实现Ququq.h#pragmaonce#define_CRT_SECURE_NO_WARNI......
  • 【人工智能LLM】开源 LLM 大模型汇总以及微调策略_有哪些开源的大模型可以微调(1)
    目录前言LLaMA*[stanfordAlpaca](https://blog.csdn.net/qq_36287702/article/details/131138356#stanford_Alpaca_11"stanfordAlpaca")GuanacoVicunaChinese-LLaMA-AlpacaChinese-VicunaLuotuo-ChineseFalcon*[OpenBuddy-Falcon](https://blog.csdn.......
  • 数组的概念
    数组的概念数组(Array)是一种基础且广泛使用的数据结构,用于在计算机内存中连续存储相同类型的数据。数组中的每个元素可以通过索引(或下标)进行访问,索引通常是整数,用于指定元素在数组中的位置。第一个元素的索引通常是0(但在某些编程语言中可能是1),随后的元素索引依次递增。数组的主......
  • 多维数组
    多维数组目录多维数组定义与特点特点应用场景遍历与操作注意事项定义与特点定义:多维数组是由一组类型相同的数据元素构成的有序集合,这些数据元素受多个线性关系的约束,每个线性关系对应一个维度。特点类型一致性:多维数组中的所有元素必须是相同的数据类型。连续存储:在......