パート1:循環キュー
私たちは、私たちが書いた最後の時間を見てQueue
:
struct Queue{
int que[1000]; //最大容纳1000个元素
int head = 0; //队列的第一个元素
int tail = 0; //队列的最后一个元素
void push(int x){ que[tail++]=x; } //增加一个
void pop(){ head++; } //弹出第一个
bool empty(){ return tail-head; } //是否为空
int num(){ return tail-head; } //返回有多少个元素
int getHead(){ return que[head]; } //获取第一个元素
};
今、私たちは、i番目の要素を取得する機能を追加しました。
int getNum(int x){
}
まあ、物事は内部に記入し始めます。
int getNum(int x){
return que[x];
}
あなたがいる場合でも、明確に、x
比較的大きな、そして、何を出力するのでしょうか?
方法を見つけるその後、我々は彼に与えることができ、円形のキューあなたがしている場合、ある、x
大きすぎる、我々は彼に戻って行くよhead
、このような要素を決定するために、再度を、:
これは、開始しました!
int getNum(int x){
return que[x%(head-tall)];
}
キューが空である場合は、それがhead-tail
0である、そこだろうerror
、我々は特別な文を追加します。
int getNum(int x){
return !(head-tall)?-1:que[x%(head-tall)];
}
キューが空の場合、リターン-1
。我々は道getHead()
も書き直します:
int getHead(){
return !(head-tall)?-1:que[head];
}
良い、それは〜循環キューを実現しています