КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
ЛЕКЦИЯ № 9. Древовидные структуры данных
Очереди Стеки Абстрактные структуры данных ЛЕКЦИЯ № 8. Абстрактные структуры данных Структурированные типы данных, такие как массивы, множества, записи, представляют собой статические структуры, так как их размеры неизменны в течение всего времени выполнения программы. Часто требуется, чтобы структуры данных меняли свои размеры в ходе решения задачи. Такие структуры данных называются динамическими. К ним относятся стеки, очереди, списки, деревья и др. Описание динамических структур с помощью массивов, записей и файлов приводит к неэкономному использованию памяти ЭВМ и увеличивает время решения задач. Каждая компонента любой динамической структуры представляет собой запись, содержащую, по крайней мере, два поля: одно поле типа «указатель», а второе – для размещения данных. В общем случае запись может содержать не один, а несколько указателей и несколько полей данных. Поле данных может быть переменной, массивом, множеством или записью. Если в указующей части содержится адрес одного элемента списка, то список называется однонаправленным (или односвязным). Если же он содержит две компоненты, то двусвязным. Над списками можно проводить различные операции, например: 1) добавление элемента к списку; 2) удаление элемента из списка с заданным ключом; 3) поиск элемента с заданным значением ключевого поля; 4) сортировка элементов списка; 5) деление списка на два и более списков; 6) объединение двух и более списков в один; 7) другие операции. Однако, как правило, необходимости во всех операциях при решении различных задач не возникает. Поэтому в зависимости от основных операций, которые необходимо применить, существуют различные виды списков. Наиболее популярные из них – это стек и очередь. Стеком называется динамическая структура данных, добавление компоненты в которую и исключение компоненты из которой производится из одного конца, называемого вершиной стека. Стек работает по принципу LIFO(Last-In, First-Out) – «Поступивший последним, обслуживается первым». Обычно над стеками выполняется три операции: 1) начальное формирование стека (запись первой компоненты); 2) добавление компоненты в стек; 3) выборка компоненты (удаление). Для формирования стека и работы с ним необходимо иметь две переменные типа «указатель», первая из которых определяет вершину стека, а вторая – вспомогательная. Пример. Составить программу, которая формирует стек, добавляет в него произвольное количество компонент, а затем читает все компоненты и выводит их на экран дисплея. В качестве данных взять строку символов. Ввод данных – с клавиатуры, признак конца ввода – строка символов END. Program STACK; uses Crt; type Alfa = String[10]; PComp = ^Comp; Comp = Record sD: Alfa; pNext: PComp end; var pTop: PComp; sC: Alfa; Procedure CreateStack(var pTop: PComp; var sC: Alfa); begin New(pTop); pTop^.pNext:= NIL; pTop^.sD:= sC; end; Procedure AddComp(var pTop: PComp; var sC: Alfa); var pAux: PComp; begin NEW(pAux); pAux^.pNext:= pTop; pTop:= pAux; pTop^.sD:= sC; end; Procedure DelComp(var pTop: PComp; var sC: ALFA); begin sC:= pTop^.sD; pTop:= pTop^.pNext; end; begin Clrscr; writeln(' ВВЕДИ СТРОКУ '); readln(sC); CreateStack(pTop, sC); repeat writeln(' ВВЕДИ СТРОКУ '); readln(sC); AddComp(pTop, sC); until sC = 'END'; writeln('****** ВЫВОД РЕЗУЛbТАТОВ ******'); repeat DelComp(pTop, sC); writeln(sC); until pTop = NIL; end. Очередью называется динамическая структура данных, добавление компоненты в которую производится в один конец, а выборка осуществляется с другого конца. Очередь работает по принципу FIFO (First-In, First-Out) – «Поступивший первым, обслуживается первым». Для формирования очереди и работы с ней необходимо иметь три переменные типа указатель, первая из которых определяет начало очереди, вторая – конец очереди, третья – вспомогательная. Пример. Составить программу, которая формирует очередь, добавляет в нее произвольное количество компонент, а затем читает все компоненты и выводит их на экран дисплея. В качестве данных взять строку символов. Ввод данных – с клавиатуры, признак конца ввода – строка символов END. Program QUEUE; uses Crt; type Alfa = String[10]; PComp = ^Comp; Comp = record sD: Alfa; pNext: PComp; end; var pBegin, pEnd: PComp; sC: Alfa; Procedure CreateQueue(var pBegin,pEnd:PComp; var sC:Alfa); begin New(pBegin); pBegin^.pNext:= NIL; pBegin^.sD:= sC; pEnd:= pBegin; end; Procedure AddQueue(var pEnd: PComp; var sC: Alfa); var pAux: PComp; begin New(pAux); pAux^.pNext:= NIL; pEnd^.pNext:= pAux; pEnd:= pAux; pEnd^.sD:= sC; end; Procedure DelQueue(var pBegin: PComp; var sC: Alfa); begin sC:= pBegin^.sD; pBegin:= pBegin^.pNext; end; begin Clrscr; writeln(' ВВЕДИ СТРОКУ '); readln(sC); CreateQueue(pBegin, pEnd, sC); repeat writeln(' ВВЕДИ СТРОКУ '); readln(sC); AddQueue(pEnd, sC); until sC = 'END'; writeln(' ***** ВЫВОД РЕЗУЛbТАТОВ *****'); repeat DelQueue(pBegin, sC); writeln(sC); until pBegin = NIL; end.
Дата добавления: 2017-01-14; Просмотров: 157; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |