栈与队列的相同点
1、他们都属于线性表。
2、线性表的特点是数据元素之间存在“一对一”的关系,栈和队列都是操作受限制的线性表。
3、都只能在线性表的端点插入和删除
栈与队列的不同点
1、队列是先进先出(FIFO),栈是后进先出(LIFO)。
2、对插入和删除操作的"限定"不同:
栈是限定只能在表的一端进行插入和删除操作的线性表;
队列是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。
3、遍历数据速度不同
栈只能从头部取数据,也就最先放入的需要遍历整个栈最后才能取出来,而且在遍历数据的时候还得为数据开辟临时空间,保持数据在遍历前的一致性。
队列则不同,它基于地址指针进行遍历,而且可以从头或尾部开始遍历,但不能同时遍历,无需开辟临时空间,因为在遍历的过程中不影像数据结构,速度要快的多。
数组与队列的区别
1、数组
数组是最最基本的数据结构,数组是使用一块连续的内存空间保存数据,保存的数据的个数在分配内存的时候就是确定的。数组可以在任意位置插入或者删除数据,插入或删除的时候后面的数据全部需要移动,移动的数据还是和数据个数有关。
数组有一维数组和二维数组。
2、队列
队列可以用数组和链表来实现,队列只允许在队尾添加数据,在对头删除数据。还有一种双端队列,在两端都可以插入和删除。