栈与队列的相同点和不同点

栈与队列的相同点和不同点

感谢博主【数据结构】栈和队列的相同点与不同点
栈的理解和操作:点击打开链接
队列的理解和操作:点击打开链接
循环队列:点击打开链接

线性表

栈(Stack)和队列(Queue)是两种操作受限的线性表。
线性表:线性表是一种线性结构,它是一个含有n≥0个结点的有限序列,同一个线性表中的数据元素数据类型相同并且满足“一对一”的逻辑关系。
“一对一”的逻辑关系指的是对于其中的结点,有且仅有一个开始结点没有前驱但有一个后继结点,有且仅有一个终端结点没有后继但有一个前驱结点,其它的结点都有且仅有一个前驱和一个后继结点。)

这种受限表现在:栈的插入和删除操作只允许在表的尾端进行(在栈中成为“栈顶”),满足“FIFO:First In Last Out”;队列只允许在表尾插入数据元素,在表头删除数据元素,满足“First In First Out”。

相同点与不同点


原文:https://blog.youkuaiyun.com/alidada_blog/article/details/80447963

(Stack)队列(Queue)都是数据结构,它们在某些方面有相似之处,但也有一些关键的不同。 **相同点:** 1. **线性结构**: 它们都属于线性数据结构,元素按照一定的顺序排列。 2. **操作限制**: 都只允许在一端进行插入(enqueue)删除(dequeue)操作,这被称为“后进先出”(Last In, First Out, LIFO)原则(对于)或“先进先出”(First In, First Out, FIFO)原则(对于队列)。 3. **应用场景**: 都广泛应用于计算机科学中的算法程序设计,如递归调用、表达式求值、任务调度等。 **不同点:** 1. **访问顺序**: 的特点是最后一个入的元素最先出(LIFO),类似于书本的封面被翻开的过程;而队列则是第一个进入的元素首先离开(FIFO),像超市排队一样。 2. **典型操作**: 支持常见的`push`(入`pop`(出)操作;队列则使用`enqueue`(入队)`dequeue`(出队)操作。 3. **示例例子**: 常用于括号匹配、函数调用,而队列常用于打印作业处理、消息传递等场景。 **具体代码示例:** ```c // 的例子 typedef struct Stack { int* arr; int top; int capacity; } Stack; void push(Stack* stack, int value) { // 入操作 } int pop(Stack* stack) { // 出操作 } // 队列的例子 typedef struct Queue { int* arr; int front; int rear; int size; int capacity; } Queue; void enqueue(Queue* queue, int value) { // 入队操作 } int dequeue(Queue* queue) { // 出队操作 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值