Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_matni(MAG_ST).doc
Скачиваний:
3
Добавлен:
10.01.2024
Размер:
1.11 Mб
Скачать

Байланысқан дизимлер

Байланысқан дизимлер ең көп тарқалған динамикалық структуралардан есапланады. Мағлыўматларды логикалық сүўретлеў көз - қарасынан дизимлер екиге ажыратылады: сызықлы ҳәм сызықлы емес.

Сызықлы дизимлерде элементлер арасындағы байланыслылық қатаң тәртиплестирилген болады, яғный элемент көрсеткиши өзинен кейинги элемент адресин өз ишине алады яки керисинше.

Сызықлы дизимлерге бир ҳәм еки бағытлы дизимлер киреди. Сызықлы емес дизимлерге болса көп бағытлы дизимлер киреди.

Улыўма алғанда дизим элементи бир яки бир неше көрсеткишлер жазыўы майданын көрсетеди.

Бир бағытлы дизимлер

Бир бағытлы дизим элементи еки майданға ийе (сызылма): информациялық майдан (INFO) ҳәм көрсеткиш майданы (PTR).

Бир бағытлы дизимде көрсеткиштиң өзине тәнлиги соннан ибарат, бунда тек ғана өзинен кейин келиўши дизим элементи адресин көрсетеди. Дизим ең соңғы элементиниң көрсеткиш майданы бос болады (NIL). LST – дизим басына көрсеткиш. Улыўма алғанда дизим бос болыўы да мүмкин, бул жағдайда LST NIL билан үстпе-үст түседи, яғный тең болады.

Дизим элементине мүрәжәт тек ғана дизим басынан әмелге асырылады, яғный бул дизимде кери байланыс жоқ.

Ҳалқа тәризли бир бағытлы дизим

Ҳалқа тәризли бир бағытлы дизим әпиўайы бир бағытлы дизимде ең соңғы элемент көрсеткишине дизим басындағы элемент көрсеткиши мәнисин өзлестириў арқалы пайда етиледи (сызылма).

Бир бағытлы дизимлер үстинде орынланатуғын әпиўайы әмеллер

  1. Бир бағытлы дизим басына элемент қосыў.

Ойлайық бир бағытлы дизим басына информациялық майданы D болған элемент қосыў талап қылынған болсын. Буның ушын бос элемент киритиў лазым (P=GetNode). Усы элементтиң информациялық майданына D (INFO(P)=D)ның мәниси өзлестириледи, көрсеткиш мәнисине болса дизим басын аңлатыўшы көрсеткиш мәниси өзлестириледи (Ptr(P) = Lst), дизим басы көрсеткиши мәнисине болса P көрсеткиш мәниси өзлестириледи (Lst = P).

Паскал тилинде әмелге асырыў төмендегише:

type

PNode = TNode;

TNode = record

Info: Integer; {дизим элементлери түри – қәлеген болыўы мүмкин}

Next: PNode;

end;

var

Lst: PNode; {дизим басын көрсетиўши көрсеткиш}

P: PNode;

Басына қосыў

New(P); {жаңа элемент жаратыў}

P^.Info:=D;

P^.Next:=Lst; {P дизим басын көрсетеди, лекин Lst P ны көрсетпейди – жаңа басланыў}

Lst:=P; {Lst дизимниң жаңа басын көрсетеди }

  1. Бир бағытлы дизимниң басынан элементти өширип таслаў.

Ойлайық, дизимниң биринши элементин өширип, лекин усы элемент туўралы мағлыўматты Info майданында сақлап қалыў талап етилсин. Буның ушын өширилип атырған элементти көрсетиўши P көрсеткишти киритип аламыз (P = Lst). X өзгериўшиге өширилип атырған элемент информациялық майданының мәнисин беремиз (X=Info(P)). Дизим басын көрсетиўши көрсеткишке нәўбеттеги элемент көрсеткиши өзлестириледи (Lst = Ptr(P)) ҳәмде элементти өширемиз (FreeNode(P)).

Паскал тилинде әмелге асырыў төмендегише:

Элементти дизимнен өшириў

P:=Lst;

X:=P^.Info;

Lst:=P^.Next;

Dispose(P); {Элемент динамикалық ядтан өшириледи}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]