队列与栈
题单介绍
队列是生活中常见的数据结构。
比如去食堂吃饭要排队,进出校门要排队,上厕所要排队……
所谓排队,就是按照先来后到的顺序,先来的先出队列,后来的后出队列。(所以出操排队不是队列,而是排序)
每次有人进队都是在队列的尾部进入,出队则是在队列头部出去。
在程序里,我们就可以用一个数组来记录队列里的元素。然后用head和tail两个变量来记录队首和队尾的位置。
```cpp
int queue[100];
int head,tail;
void push(int x){//元素x入队
queue[tail]=x;
tail++;
}
void pop(){//队首元素出队
head++;
}
int front(){//查询队首元素
return queue[head];
}
```
而与队列的先进先出相对应的,就是后进先出,也就是最后进来的元素最先出去。我们把这种数据结构叫做栈。
不同于队列在生活中使用的更多,栈在生活中并不是非常常见。一般在一些空间比较小,只有一个出入口的地方会用到栈。比如米缸,最先倒进去的米最后被拿出来。
在程序运行时经常会用到栈,而不是队列。比如递归函数就是栈的应用。后调用的函数最先执行完。
在栈中,每次入栈或出栈一个元素,都是在栈顶。
```cpp
int stack[100];
int tp;
void push(int x){//元素x入栈
stack[tp]=x;
tp++;
}
void pop(){//栈顶元素出栈
tp--;
}
int top(){
return stack[tp-1];
}
```