Студопедия — Функция формирования элемента стека
Студопедия Главная Случайная страница Обратная связь

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

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






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







Дата добавления: 2014-11-10; просмотров: 949. Нарушение авторских прав; Мы поможем в написании вашей работы!



Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

Дезинфекция предметов ухода, инструментов однократного и многократного использования   Дезинфекция изделий медицинского назначения проводится с целью уничтожения патогенных и условно-патогенных микроорганизмов - вирусов (в т...

Машины и механизмы для нарезки овощей В зависимости от назначения овощерезательные машины подразделяются на две группы: машины для нарезки сырых и вареных овощей...

Механизм действия гормонов а) Цитозольный механизм действия гормонов. По цитозольному механизму действуют гормоны 1 группы...

Алгоритм выполнения манипуляции Приемы наружного акушерского исследования. Приемы Леопольда – Левицкого. Цель...

ИГРЫ НА ТАКТИЛЬНОЕ ВЗАИМОДЕЙСТВИЕ Методические рекомендации по проведению игр на тактильное взаимодействие...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия