队列就像食堂排队打饭一样,先进先出。
这里依旧用数组模拟。
队列会在队尾插入元素,在队头弹出元素。
我们用q数组用于模拟队列,hh表示头元素下标,tt表示尾部元素下标
hh q tt
|_______|________|________|
硬要画图解释的话就是上面那样子。然后弹出队头就很自然的是hh ++了。队尾插入新元素同栈一样理解即可。
封装代码
// const int N = 1e6 + 10;
struct queue
{
// 初始化,若tt = -1则0-base,tt = 0 则1-base
int q[N], tt = -1, hh = 0;
void push(int x)
{
q[ ++ tt] = x;
}
void pop()
{
hh ++;
}
bool empty()
{
return hh > tt;
}
int front()
{
return q[hh];
}
/*
数组模拟还可以取出队尾元素
int back()
{
return q[tt];
}
*/
};
评论(0)
暂无评论