Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Функция формирования элемента стека






Простейший вид функции (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 представлена на рис. 3.1.

Рис. 3.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.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.