Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Dispose(p)

End

Else

Begin

while (p^.next<>nil) and (p^.next^.inf<>a) do

p:=p^.next;

if p^.next=nil then writeln ('такого елементу немає')

Else

Begin

q:=p^.next;

p^.next:=q^.next;

Dispose(q)

End

end;

Тема: Двонапрямлені лінійні списки.

У двонапрямлених списках і в розглянутих раніше однонапрямлених елементи утворюють лінійну структуру даних з послідовним доступом, але на відміну від них, рух по списку можливий у двох напрямках, тому кожен елемент міститиме, окрім інформаційного поля, два вказівні поля: на наступний і попередній елементи. Список матиме два фіксованих вказівники: на перший – first; на останній – last.

Оскільки рух по списку можливий у двох напрямках, то переміщення від first до last здійснюється через вказівник next; від last до first через вказівник prev, тому формування списку за правилом стеку від first до last – це та ж сама черга від last до first і навпаки.Як і в однонапрямлених списках над двонапрямленими виконують ті ж самі операції.

Оголошення структури списку може мати вигляд:

TYPE

list2=^el_list2;

el_list2=record

inf:integer;

Next,prev:list2

END;

  1. Формування списку.

writeln('введіть кількість елементів у списку');

readln(n);

first:=nil;

last:=nil;

for i:=1 to n do

Begin

writeln('введіть елемент');

readln(a);

new(p);

p^.inf:=a;

if last=nil then last:=p;

p^.next:=first;

first^.prev:=p;

first:=p

end;

Перегляд. Здійснюється аналогічно, тільки може здійснюватися в обоз напрямках.

 

PROCEDURE RESIV;

BEGIN

p:=first;

while p^.next<>nil do

Begin

write(p^.inf,' ');

p:=p^.next

end;

writeln(p^.inf,' ')

END;

Пошук.

p:=first;

writeln('введіть шуканий елемент');

readln(a);

i:=0;

while (p<>nil) do

Begin

inc(k);

if p^.inf=a then

Begin

i:=i+1;

Writeln('під № ',k)

end;

p:=p^.next

end;

if i=0 then writeln ('немає')

Else writeln ('кількість ',i)

Вставка перед на відмінну від однонапрямленого списку аналогічна вставці після з точністю переміни вказівників prev і next.

write('введіть елемент, після якого потрібно вставити новий');

readln(n);

write('введіть новий елемент');

readln(a);

p:=first;

while p<>nil do

Begin

if p^.inf=n then

Begin

new(q);

q^.next:=p^.next;

p^.next:=q;

q^.prev:=p

end;

q^.inf:=a;

p:=p^.next

end;

 

Вилучення. Як і в попередніх випадках видалення елементу не потребує складного пошуку із порівнянням через один елемент, як у однонапрямлених списках.

write('введіть елемент, який потрібно вилучити');

readln(a);

p:=first;

while p<>nil do

Begin

if p^.inf=a then

Begin

if p=first then

Begin

first:=p^.next;

p^.prev:=nil

End

Else

Begin

if p^.next<>nil then

Begin

p^.next^.prev:=p^.prev;

p^.prev^.next:=p^.next^.next

End

Else

Begin

p^.prev^.next:=nil

end;

end;

End

Else

p^.prev^.next:=p;

p:=p^.next

end;

Тема: Бінарні дерева.

Особливим видом розгалужених списків є дерева. Особливістю таких динамічних структур даних є те, що кожен елемент має декілька вказівних полів (бінарні, тернарне, п-арні дерева).

На відмінну від двонапрямлених списків, дерева не мають лінійної структури. Підлеглість елементів має розгалужену структуру – це означає, що такі списки мають один верхній елемент – голову. Він має декілька підлеглих елементів, які в свою чергу мають декілька елементів, причому на будь-якому рівні всі вказівники повинні бути зв’язані з іншими елементами, якщо ж ні, то в таких випадках вони вказують в nil.

Доступ до елементів дерева здійснюється послідовно з вершини дерева через фіксований вказівник top. Елементи дерева, обидва вказівники яких зв’язані із підлеглими елементами, називають вузловими вершинами або гілками. Елементи дерева, обидва вказівники яких вільні, називаються листками або висячими вершинами. Елементи дерева, один з вказівників яких вільний, називаються напівисячими вершинами.

Шириною бінарного дерева називається кількість вузлів від крайнього лівого до крайнього правого елементу. Висотою бінарного дерева називається максимальна кількість рівнів елементів від вершини дерева до найдальшого листка.




Переглядів: 299

<== попередня сторінка | наступна сторінка ==>
Формування. | Бінарні дерева заповнюються не довільним чином або у порядку слідування елементів, а за алгоритмом, який формує їх у вигляді впорядкованої структури.

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.007 сек.