栈和队列区别

栈:

栈是一种后进先出(LIFO)的线性表,只允许从一端插入和删除数据。

栈有两种存储方式,即线性存储(顺序栈)和链表存储(链栈)。栈的一个最重要的特征就是栈的插入和删除只能在栈顶进行,所以每次删除的元素都是最后进栈的元素。每个栈都有一个栈顶指针,它初始值为-1,且总是指向最后一个入栈的元素,栈有两种处理方式,即进栈(push)和出栈(pop),因为在进栈只需要移动一个变量存储空间,所以它的时间复杂度为O(1),但是对于出栈分两种情况,栈未满时,时间复杂度也为O(1),但是当栈满时,需要重新分配内存,并移动栈内所有数据,所以此时的时间复杂度为O(n)。以下举例栈结构的两种实现方式,线性存储和链接存储。

 

队列:

队列以一种先入先出(FIFO)的线性表,只在线性表两端进行操作。

队列有两种存储方式,即线性存储(循环队列)和链表存储(链队)。类似于现实中排队时的队列(队尾进,队头出),队列插入元素的一端称为表尾,删除(取出)元素的一端称为表头。分别对应于入队和出队操作。

 

栈和队列的区别:

1、栈的插入和删除操作都是在一端进行的,而队列的操作却是在两端进行的。

2、栈是先进后出,队列是先进先出。

3、栈只允许在表尾一端进行插入和删除,队列只允许在表尾一端进行插入,在表头一端进行删除。

posted @ 2020-10-25 23:20  CodeRabbit_joion  阅读(5609)  评论(0)    收藏  举报