![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Простейший вид функции (push), в которую в качестве параметров передаются указатель на вершину и введенная информация, а измененное значение вершины возвращается в точку вызова оператором return:
Stack* InStack(Stack *p, int in) {
Stack *t = new Stack; // Захватываем память для элемента
t -> info = in; // Формируем информационную часть
t -> next = p; // Формируем адресную часть
return t;
}
Обращение к этой функции для добавления нового элемента «а» в стек, вершиной которого является указатель begin: begin = InStack(begin, a);
Алгоритм просмотра стека (без извлечения его элементов, т.е. без сдвига вершины)
1. Устанавливаем текущий указатель на начало списка: t = begin;
2. Начинаем цикл, работающий до тех пор, пока указатель t не равен NULL (признак окончания списка).
3. Выводим информационную часть текущего элемента t -> info на экран.
4. Текущий указатель переставляем на следующий элемент, адрес которого находится в поле next текущего элемента: t = t -> next;
5. Конец цикла.
Функция, реализующая рассмотренный алгоритм:
void View(Stack *p) {
Stack *t = p;
while(t!= NULL) {
// Вывод на экран информационной части, например, cout << t -> info << endl;
t = t -> Next;
}
}
Обращение к этой функции: View(begin);
Блок-схема функции View представлена на рис. 2.1.
Рис. 2.1
Функция получения информации из вершины стека c извлечением:
Stack* OutStack(Stack* p, int *out) {
Stack *t = p; // Устанавливаем указатель t на вершину p
*out = p -> info;
p = p -> next; // Переставляем вершину p на следующий
delete t; // Удаляем бывшую вершину t
return p; // Возвращаем новую вершину p
}
Обращение к этой функции: begin = OutStack(begin, &a); информацией является переданное по адресу значение «а».
Функция освобождения памяти, занятой стеком:
void Del_All(Stack **p) {
Stack *t;
while(*p!= NULL) {
t = *p;
*p = (*p) -> Next;
delete t;
}
}
Обращение к этой функции: Del_All(&begin); после ее выполнения указатель на вершину begin будет равен NULL.
Дата публикования: 2015-02-22; Прочитано: 281 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!