Итак, я проверил вашу книгу и вроде понял, в чем ваша проблема.
Такое представление оказалось эффективным, если у нас был только один стек или одна очередь.Однако, когда несколько стеков и очередей сосуществуют, не было эффективного способа представлять их последовательно
Таким образом, под последовательным пониманием следует понимать, что это означает использование массивов для представления стеков, а не связанного списка.Теперь просто предположим, что у вас есть матрица, состоящая из 10 массивов для представления каждого размера 100, и вы помещаете некоторые данные в каждый из них.Скажем, вы помещаете только несколько элементов в каждый стек, что в итоге приводит к потере большого количества данных, поскольку в матрице содержится 1000 элементов.Эта проблема возникала при использовании одного массива, но она становится более заметной, когда у вас есть несколько массивов для нескольких стеков.
Теперь, как вы, возможно, поняли, при использовании представления связанного списка стека используется столько памяти, сколько необходимос незначительными накладными расходами на отслеживание следующего элемента, в данном случае ссылка на указатель стека.
stackpointer top[MAX_STACKS]
Итак, мы создали массив типа стека указателя для сохранениятрек верхней позиции каждого отдельного стека.Поэтому теперь, когда пользователь хочет ввести элемент, он должен передать индекс (int i), а также данные (элемент элемента).
void push(int i ,element item)
{
stackpointer temp;
malloc(temp,sizeof(*temp));
temp->data = item;
temp->link = top[i];
top[i] = temp;
}
Итак, мы создаем временную переменную для хранениянаши данные, которые теперь станут вершиной нашего стека, но перед этим мы должны указать их на предыдущую вершину стека (это делается в строке 5), а в строке 6 мы просто указываем вершине [i] значение temp,Тем не менее, вы можете исправить свой код следующим образом:
stackpointer temp = (stackpointer)malloc(sizeof(element));
Если у вас есть сомнения по поводу malloc, просто обратитесь к this .Если у вас есть сомнения, дайте мне знать, и я уточню все, что вам нужно.