русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Добавление элемента в упорядоченный стек.


Дата добавления: 2014-11-27; просмотров: 886; Нарушение авторских прав


Будем считать, что элементы стека расположены по возрастанию их численных значений.

Возможны два варианта включения нового элемента:

a) включение в начало стека (рис.16);

 

 

 
 

 


б) включение в произвольное место стека (рис.17).

 
 

 

 


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

Как следует из анализа рис.17, для изменения связей в стеке при добавлении элемента требуется знать адрес предыдущего элемента.

 

ProgramInsElem1;

Label 10;

Type PoinType = ^DynType;

DynType = record

Inf : integer;

Next : PoinType;

end;

Var Beg,Run,

Pred, { указатель эл-та, предшествующего }

{ включаемому новому элементу }

NewEl : PoinType; { указатель нового элемента }

k : integer;

Begin

Формирование стека

Read(k); New(NewEl); NewEl^.Inf:=k;

If (Beg=nil) or (k<=Beg^.Inf) then

Begin

NewEl^.Next:=Beg; { включение нового эл-та }

Beg:=NewEl; { в начало стека }

End

Else

Begin

Pred:=Beg; Run:=Beg^.Next;

While Run<>nil do

If Run^.Inf > k then

Begin

NewEl^.Next:=Run; { включение нового эл-та }

Pred^.Next:=NewEl; { в середину стека }

Goto 10

End

Else

Begin

Pred:=Run; { перебор элементов }

Run:=Run^.Next { стека }

End;

Pred^.Next:=NewEl; { включение нового эл-та }

NewEl^.Next:=nil; { в конец стека }

End;

10:

Печать стека

End.

 

Если при просмотре стека не обнаружен элемент, превышающий значение k, то это означает, что значение k должно быть записано после последнего элемента стека.



Как и в предыдущем примере, программу InsElem1 можно реализовать без указателя Pred, возложив его функции на указатель Run.

 

ProgramInsElem2;

Type PoinType = ^DynType;

DynType = record

Inf : integer;

Next : PoinType;

end;

Var Beg,Run,

NewEl : PoinType; { указатель нового элемента }

k : integer;

Cond : boolean;

Begin

Формирование стека

Read(k);

New(NewEl); NewEl^.Inf:=k;

If (Beg=nil) or (k<=Beg^.Inf) then

Begin

NewEl^.Next:=Beg; { включение нового эл-та }

Beg:=NewEl; { в начало стека }

End

Else

Begin

Run:=Beg; Cond:=true;

While (Run^.Next<>nil) andConddo

If Run^.Next^.Inf > k then

Begin

NewEl^.Next:=Run^.Next; { включение нового эл-та }

Run^.Next:=NewEl; { в середину стека }

Cond:=false

End

Else

Run:=Run^.Next;

IfCond then

Begin

Run^.Next:=NewEl; { включение нового эл-та }

NewEl^.Next:=nil; { в конец стека }

End;

End;

Печать стека

End.

 

Здесь следует обратить также внимание, что за счет небольшой модификации программы в InsElem2 исключен оператор Goto.

 

 



<== предыдущая лекция | следующая лекция ==>
Удаление из стека максимального элемента. | О Б Р А Б О Т К А О Ч Е Р Е Д И


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.