Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по праграм 2 курс.docx
Скачиваний:
14
Добавлен:
23.11.2019
Размер:
56.39 Кб
Скачать
  1. Динамические структуры данных: стек, очередь, список и их особенности.

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

Часто требуется, чтобы структуры данных меняли свои размеры в ходе решения задачи. Такие структуры данных называются динамическими, к ним относятся стеки, очереди, списки, деревья и другие.

Каждая компонента любой динамической структуры представляет собой запись, содержащую по крайней мере два поля: одно поле типа указатель, а второе - для размещения данных, например:

Type pnode=^node;

node=record

D:word;{информационная}

S:string;{часть}

P:pnode; {указатель на следующий элемент}

End;

  1. Список. Типы списков. Операции над списками.

Различают:

  • Односвязные (каждый элемент связан со следующим);

  • Двусвязные (каждый элемент связан со следующим и с предыдущим)

  • Кольцевые (если последний элемент связан указателем с первым)

Операции над списками:

  • Начальное формирование списка(создание первого элемента);

  • Добавление элемента в конец списка;

  • Чтение элемента с заданным ключом;

  • Вставка элемента в заданное место;

  • Удаление элемента с заданным ключом;

Однонаправленный список

— информационная часть звена списка (величина любого простого или структурированного типа, кроме файлового),

Next — указатель на следующее звено списка;

First — указатель на заглавное звено списка.

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

Двунаправленный список

Свойством такого списка является то, что для доступа к его элементам вовсе не обязательно хранить указатель на первый элемент. Достаточно иметь указатель на любой элемент списка. Первый элемент всегда можно найти по цепочке указателей на предыдущие элементы, а последний - по цепочке указателей на следующие. Но наличие указателя на заголовок списка в ряде случаев ускоряет работу со списком

  1. Выбор нового текущего элемента в списке.

begin

readln(s);

pnt:=head;

repeat

if pnt^.data=s then current:=pnt;

pnt:=pnt^.next;

until pnt=nil;

end;

  1. Вывод всех элементов из списка.

begin

pnt:=head; i:=1;

repeat

Writeln (i, “ √ ”, pnt^.data);

pnt:=pnt^.next;

i:=i+1;

until pnt=nil;

end;

  1. Добавление нового элемента справа от текущего в списке.

begin

writeln(“элемент”); readln(s);

New (pnt);

pnt^.data:=s;

pnt^.last:=current;

pnt^.next:=current^.next;

pnt2:=current^.next;

if not(pnt2=nil) then pnt2^.last:=pnt;

end;

Добавление нового элемента слева от текущего в списке.

begin

writeln(“элемент”); readln(s);

new(pnt);

pnt^.data:=s;

pnt^.last:=current^.last;

pnt^.next:=current;

pnt2:=current^.last;

if not(pnt2=nil) then

pnt2^.next:=pnt;

end;