Расскажите, пожалуйста, о стеках. Как пишется программа?
Учусь на втором курсе, программирование, C++. Так получается, что объяснений практически нет, сплошное "самообучение".
Стек - структура данных с доступом к элементам по принципу LIFO (Last In First Out - Последний пришел - первый вышел). Данные добавляются в начало (конец, кому как удобно), оттуда же и извлекаются. Для реализации данной структуры достаточно иметь лишь две функции и указатель на верхушку:
push(item); //добавляет данные в стек
pop(); //извлекает последний элемент
Очередь - структура данных с доступом к элементам по принципу FIFO (First In First Out - Первый пришел - Первый вышел). Данные добавляются в конец, а извлекаются из начала. Для быстрого добавления и извлечения данных понадобится два указателя, один на начало, очереди, второй на ее конец. Для работы с очередью используются функции:
enqueue(item); //добавляет новый элемент в очередь
dequeue(); //извлекает элемент из очереди
Для работы с указателями в C++ вам необходимо ознакомиться, например, с данной статьей (одна из первых в поиске).
Затем, вам необходимо создать элемент данных вашего стека (очереди). Например:
struct data {
int p;
int c;
}
После этого обзавестись ячейкой стека. Например:
struct element {
data element_data;
element *next; //указатель на следующий элемент
}
Указатель на следующий элемент необходим дабы наши данные в стеке (очереди) имели некоторую последовательность и были как-то связаны между собой.
После этого пишете необходимые функции, обзаводитесь указателями на начало (и конец, при необходимости). Например для push():
//somewhere in the code
element *top; //инициализируется в NULL
//...
void push(data newData) {
//создаем нашу структуру element и указатель на нее
element *newElement = new element();
//element_data = newData
element->element_data = newData;
//next = top - здесь мы и задаем связку между двумя элементами стека
element->next = top;
//top = указателю на нашу структуру
top = newElement;
}
Все остальное по аналогии. На C++ давненько я не кодил (проверить негде), поэтому прошу заранее прощения всех гуру, поправьте если где напортачил.
Я бы описал стэк как упаковку с коллекцией монеток, уложеных в стопочку. С 1 до 10. Что бы получить доступ к 5, нужно снять 10, потом 9, 8, 7, 6 и только потом получим 5-ю. Ну это лично моё ИМХО, когда то мне было проще запомнить так. В остальном остаются только технические вопросы, и я не могу не согласится с Dex'ом...
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Например, есть значение AgeКак сделать чтобы в его столбце число не могло быть меньше 0?
Дана таблица с контрактами, необходимо для каждого contractid просуммировать задолженность в таблице invoiceT