Я изучаю очереди из книги. Автор объясняет операцию вставки элемента в очередь, используя следующий код.
#define MAX 100
char *p[MAX];
int spos = 0; // spos: holds the index of the **next free** storage location
int rpos = 0;// rpos: holds the index of the next item to retrieve
void qstore(char *q)
{
if(spos==MAX) {
printf("List Full\n");
return;
}
p[spos] = q;
spos++;
}
Таким образом, согласно приведенному выше коду, очередь заполнена, если spos = 100, т.е. последний элемент в массиве. Теперь, поскольку spos содержит индекс следующего свободного места хранения , тогда, когда spos = 100, последняя позиция в массиве пуста. Так почему же это объясняется как Полный список ? Разве этот код не должен быть изменен так, чтобы он позволял заполнять последнюю позицию в массиве, или я упускаю что-то очень очевидное?
Спасибо.