1、 栈(Stack)
定义: 栈是一种特殊的线性数据结构,遵循后进先出(LIFO, Last In First Out)的原则。也就是说,最后一个被压入栈的元素总是第一个被弹出。
主要操作:
push(element): 将元素压入栈顶。
pop(): 弹出栈顶元素,并返回该元素的值。如果栈为空,则可能引发错误。
peek(): 返回栈顶元素的值,但不弹出。如果栈为空,则可能返回特殊值或引发错误。
isEmpty(): 检查栈是否为空。
size(): 返回栈中元素的数量。
应用 函数调用栈、浏览器历史记录、撤销操作(如文本编辑器的撤销功能)等。
2、队列(Queue)
定义 队列是一种特殊的线性数据结构,遵循先进先出(FIFO, First In First Out)的原则。也就是说,第一个进入队列的元素总是第一个被移除。
主要操作
enqueue(element): 在队尾添加一个元素。
dequeue(): 移除队首元素,并返回该元素的值。如果队列为空,则可能引发错误。
front(): 返回队首元素的值,但不移除。如果队列为空,则可能返回特殊值或引发错误。
isEmpty(): 检查队列是否为空。
size(): 返回队列中元素的数量。
应用 任务队列(如操作系统的任务调度)、打印机队列、消息队列等。
3、数组(Array)
定义 数组是一种线性数据结构,用于存储相同类型的数据元素的集合。数组中的元素可以通过索引进行访问,索引通常是从0开始的整数。
特点 数组的大小是固定的,一旦创建就不能改变。 数组中的元素在内存中是连续存储的,因此可以通过索引直接访问任意位置的元素。 数组支持高效的随机访问,访问任意位置元素的时间复杂度为O(1)。
主要操作
访问元素:通过索引访问数组中的元素。
修改元素:通过索引修改数组中的元素值。
遍历数组:通过循环遍历数组中的所有元素。
应用 存储有序的数据集合、实现动态数组(如Java中的ArrayList)、实现各种算法等。