Алгоритмизации
Скачать 1.15 Mb.
|
АлгоритмизвлеченияэлементаизстекаВ данном алгоритме вершина beginне сдвигается. Устанавливаем текущий указатель на вершину стека: t = begin; Обрабатываем информационную часть текущего элемента (t->info), например, выводим на экран. Переставляем указатель текущего элемента на следующий элемент, адрес которого находится в адресной части текущего: t = t->Next; ПросмотрстекаУстанавливаем текущий указатель на вершину t = begin. Проверяем, если begin равен NULL, то стек пуст, выводим сообщение и либо завершаем работу, либо переходим на формирование стека. Если стек не пуст, начинаем выполнять цикл до тех пор, пока текущий указатель t не равен NULL, т.е. пока не обработаем последний элемент, в адресной части которого находится значение NULL. Выводим на экран информационную часть текущего элемента: printf(“\n Элемент: %d”, t -> info); или cout << t->info; Переставляем текущий указатель на следующий элемент: t = t -> Next; Конец цикла. Функция просмотра стека без сдвига его вершины может выглядеть следующим образом: void View(Stack *begin) { Stack *t = begin; if(begin == NULL) { puts(“ Стек пуст! ”); return; } while( t != NULL) { printf(“ %d \n”, t->info); t = t -> Next; } } Обращение к этой функции: View(begin); Алгоритмосвобожденияпамяти,занятойстекомНачинаем цикл, выполняющийся пока beginне станет равным NULL. Устанавливаем текущий указатель на вершину стека: t = begin; Вершину стека переставляем на следующий элемент: begin = t->Next; Уничтожаем текущий (бывшую вершину) элемент, т.е. освобождаем занятую под него память free(t); Функция освобождения памяти, занятой стеком, будет выглядеть следующим образом: void Delete_Stack(Stack **begin) { Stack *t; while( *begin != NULL) { t = *begin; *begin = (*begin) -> Next; free(t); } } Параметром данной функции является указатель на указатель, так как значение вершины стека передается в функцию и должно быть возвращено из нее. Тогда обращение к функцииDelete_Stackс контролем ее выполнения будет следующим: Delete_Stack(&begin); if(begin == NULL) puts(“ Free! ”); . . . |