队列和栈的区别
队列和栈是两种不同的数据结构,它们有以下区别:
1、操作的名称不同
队列的插入称为入队,队列的删除称为出队。
栈的插入称为进栈,栈的删除称为出栈。
2、可操作的方式不同
队列是在队尾入队,队头出队,即两边都可操作。
栈的进栈和出栈都是在栈顶进行的,无法对栈底直接进行操作。
3、操作的方法不同
队列是先进先出(FIFO),即队列的修改是依先进先出的原则进行的。新来的成员总是加入队尾(不能从中间插入),每次离开的成员总是队列头上(不允许中途离队)。
栈为后进先出(LIFO),即每次删除(出栈)的总是当前栈中最新的元素,即最后插入(进栈)的元素,而最先插入的被放在栈的底部,要到最后才能删除。
一、两个栈模拟一个队列
1、主要思想
栈的特点:先进后出
队列的特点:先进先出
2、结构设计
用两个栈实现一个队列,栈的一系列操作都在栈顶完成
//定义元素的数据类型
typedef int data_type;
//定义结构体的数据类型
typedef struct stack
{
data_type arr[N];
int top;
}Stack;
3、基本操作
我们要实现一个队列,所以就要实现队列的先进先出的思想
(1)先声明
typedef int data_type;
typedef struct stack
{
data_type arr[N];
int top;
}Stack;
enum res
{
STACKNULL = -3,
FULL,
EMPTY,
OK
};
//创建栈
Stack *createStack(void);
//入栈
int InStack(Stack *pSt