Мне нужна помощь в использовании очереди в C ++.
У меня есть struct
, который содержит 2 члена, которые я хочу удалить позже:
#define MAX 10
struct queue{
int head,tail;
string code[max], title[max];
} q;
А вот мой код очереди:
void delete(){
if(empty()){
cout<<"Queue is empty!";
}else{
int i;
for (i = 0; i < q.tail; i++)
q.code[i]=q.code[1+i];
q.title[i]=q.title[i+1];
q.tail--;
}
show_data();
}
Допустим, у меня есть 3 элемента в очереди:
if01 | C ++
if02 | рубин
if03 | Java
Я хочу удалить элементы по одному. Поскольку это очередь, первые данные, которые должны быть удалены, это номер 1, верно?
Так должно получиться так:
if02 | рубин
if03 | Java
Но, к сожалению, это не работает так, я получаю вывод:
if02 | C ++
if03 | рубин
А потом, если я снова попытаюсь удалить, я получу вывод, подобный этому:
- if03 | C ++
Я не знаю, почему title
не будет удален, как code
.
Если я попытаюсь повернуть цикл вспять, как это:
for (i = 0; i < q.tail; i++)
q.title[i]=q.title[i+1];
q.code[i]=q.code[1+i];
q.tail--;
code
не удаляется, но title
удаляет нормально.