数组模拟堆
tt表示栈顶,习惯从下标1开始存储,tt=0表示栈空。tt表示栈内元素个数。int stk[N], tt = 0;
向栈顶插入一个数stk[ ++ tt] = x;
从栈顶弹出一个数tt -- ;
取栈顶的值stk[tt];
判断栈是否为空if (tt > 0){ 非空 }
数组模拟队列
hh 表示队头,tt表示队尾,队尾插入,队头取出。int q[N], hh = 0, tt = -1;
习惯从下标0开存储,hh>tt表示队列空,
hh==tt 时说明队列中只有一个元素,tt-hh+1表示队列中元素个数。
向队尾插入一个数q[ ++ tt] = x;
取队头的值 q[hh];
取队尾 q[tt]
从队头弹出一个数hh ++ ;
队尾tt指向当前队尾的最后一个数,即要插入的位置前一个位置(在++后才指向要插入的位置),因此先++tt,再插入
队头hh,指向当前要弹出的位置,先弹出,再++
判断队列是否为空if (hh <= tt){ 非空 }