Стек - структура данных с доступом к элементам по принципу LIFO (Last In First Out - Последний пришел - первый вышел). Данные добавляются в начало (конец, кому как удобно), оттуда же и извлекаются. Для реализации данной структуры достаточно иметь лишь две функции и указатель на верхушку:
push(item); //добавляет данные в стек
pop(); //извлекает последний элемент
Очередь - структура данных с доступом к элементам по принципу FIFO (First In First Out - Первый пришел - Первый вышел). Данные добавляются в конец, а извлекаются из начала. Для быстрого добавления и извлечения данных понадобится два указателя, один на начало, очереди, второй на ее конец. Для работы с очередью используются функции:
enqueue(item); //добавляет новый элемент в очередь
dequeue(); //извлекает элемент из очереди
Затем, вам необходимо создать элемент данных вашего стека (очереди). Например:
struct data {
int p;
int c;
}
После этого обзавестись ячейкой стека. Например:
struct element {
data element_data;
element *next; //указатель на следующий элемент
}
Указатель на следующий элемент необходим дабы наши данные в стеке (очереди) имели некоторую последовательность и были как-то связаны между собой.