Stack和Queue的主要区别在于stack 是LIFO类型,而Queue是FIFO类型的数据结构。LIFO代表后进先出,即如果我们将数据放入堆栈,那么最后一个条目将首先被处理。虽然FIFO代表先进先出,但它意味着队列中的第一个条目将被首先处理。
堆 | 队列 |
---|---|
仅允许在一端插入或删除元素的线性列表称为堆栈 | 允许在一端插入并在另一端删除的线性列表称为队列 |
由于元素的插入和删除是在堆栈的一端执行的,因此只能以相反的插入顺序删除元素。 | 由于一个元素的插入和删除是在队列的另一端进行的,所以只能按照插入的相同顺序删除元素。 |
堆栈称为后进先出 (LIFO)列表 | 队列称为先进先出 (FIFO)列表。 |
最多和最少可访问的元素被称为堆栈的顶部和底部 | 元素的插入在 FRONT 端执行,从REAR端执行删除 |
示例:堆栈正在将盘子一层一层地排列。 | 示例:临时商店中的普通队列。 |
插入操作称为PUSH,删除操作称为POP | 插入操作称为ENQUEUE,删除操作称为QUEUE |
任何语言的函数调用都使用 Stack | 操作系统的任务调度使用队列 |
要检查堆栈是否为空,使用以下条件:TOP == -1 | 要检查队列是否为空,使用以下条件:FRONT == -1 || 前 == 后 + 1 |
要检查堆栈是否已满,使用以下条件:TOP == MAX – 1 | 要检查队列是否已满,使用以下条件:REAR == MAX – 1 |
Stack 只需要一个引用指针。 | 一个队列需要两个引用指针。 |
检查堆栈是否为空的条件:
int isEmpty ()
{
如果(顶部==-1 )
返回1;
否则返回0;
}
检查堆栈是否已满的条件
int isFull()
{
if(top==MAX-1)
return 1;
else
return 0;
}
检查队列是否为空的条件:
int isEmpty()
{
if(front==-1 || front==rear+1)
return 1;
else
return 0;
}
检查队列是否已满的条件:
int isFull()
{
if(rear==MAX-1)
return 1;
else
return 0;
}
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习