队列与栈

时间:2024-01-23 11:28:22

1,队列:先进先出

比如:

入队顺序:12345

出队顺序:12345

2,栈:先进后出

 

比如:

入队顺序:12345

出队顺序:54321

3,循环队列【队头队尾相连】

 

队空的条件:head=tail

在队空的时候,head=tail,当存入一个数时,尾指针就向后移一格,所以当在零号位置存一个数据时,尾指针指向1,在1存数据时,尾指针指向2,。。。,当队满的时候,尾指针又指向了头指针的位置,即head=tail。这时就容易产生混淆

解决这个问题的两个方案:

1,记录队空,队满。【很少使用】

2,队列中少存一个元素。【经常使用的方法】

通常我们都是使用第二种方式来解决,在这种情况下,队满 的条件是:(nail+1)%size=head

为什么要写的这么复杂呢?

主要是因为考虑到,head不在0位置的情况。【比如说一个容量为5的队列,现在存4个为满,假设head在2位置,则nail指向1未满,如下图:】

 

所以,在队列中少放一个元素时,队满的条件是:(nail+1)%size=head