Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Maǵlıwmatlar strukturası hám algoritmler

.pdf
Скачиваний:
18
Добавлен:
17.08.2024
Размер:
1.02 Mб
Скачать

Dizim elementine múráját tek ǵana dizim basınan ámelge asırıladı, yaǵnıy bul dizimdekeri baylanıs joq.

Halqa tárizli bir baǵıtlı dizim

Halqa tárizli bir baǵıtlı dizim ápiwayı bir baǵıtlı dizimde eń sońǵı element kórsetkishine dizim basındaǵı element kórsetkishi mánisin ózlestiriw arqalı payda etiledi (sızılma).

Bir baǵıtlı dizimler ústinde orınlanatuǵın ápiwayı ámeller

1) Bir baǵıtlı dizim basına element qosıw.

Oylayıq bir baǵıtlı dizim basına informasiyalıq maydanı D bolǵan element qosıw talap qılınǵan bolsın. Bunıń ushın bos element kiritiw lazım (P=GetNode). Usı elementtiń informasiyalıq maydanına D (INFO(P)=D)nıń mánisi ózlestiriledi, kórsetkish mánisine bolsa dizim basın ańlatıwshı kórsetkish mánisi ózlestiriledi (Ptr(P) = Lst), dizim bası kórsetkishi mánisine bolsa P kórsetkish mánisi ózlestiriledi (Lst = P).

Paskal tilinde ámelge asırıw tómendegishe: type

PNode = TNode; TNode = record

Info: Integer; {dizim elementleri túri – qálegen bolıwı múmkin}Next: PNode;

end; var

Lst: PNode; {dizim basın kórsetiwshi kórsetkish}P: PNode;

Basına qosıw

New(P); {jańa element jaratıw} P^.Info:=D;

P^.Next:=Lst; {P dizim basın kórsetedi, lekin Lst P nı kórsetpeydi – jańa baslanıw}Lst:=P; {Lst dizimniń jańa basın kórsetedi }

2) Bir baǵıtlı dizimniń basınan elementti óshirip taslaw.

Oylayıq, dizimniń birinshi elementin óshirip, lekin usı element tuwralı maǵlıwmattı Info maydanında saqlap qalıw talap etilsin. Bunıń ushın óshirilip atırǵan elementti kórsetiwshi P kórsetkishti kiritip alamız (P = Lst). X ózgeriwshige óshirilip atırǵan element informasiyalıq maydanınıń mánisin beremiz (X=Info(P)). Dizim basın kórsetiwshi kórsetkishke náwbettegi element kórsetkishi ózlestiriledi (Lst = Ptr(P)) hámde elementti óshiremiz (FreeNode(P)).

Paskal tilinde ámelge asırıw tómendegishe:

Elementti dizimnen óshiriw P:=Lst;

X:=P^.Info;

Lst:=P^.Next;

Dispose(P); {Element dinamikalıq yadtan óshiriledi}

Eki baǵıtlı dizim

Kópshilik máselelerdi sheshiwde bir tárepke baǵdarlanǵan dizimlerden paydalanıw belgili bir qıyınshılıqlardı keltirip shıǵaradı. Sebebi, bir tárepke baǵdarlanǵan dizimde hár dayım dizimde tek bas buwınnan dizimniń sońǵı buwını tárepine háreketleniw múmkin. Lekin kópshilik máseleler shelilip atırǵanda belgili bir elementti qayta islew ushın onnan aldın kelgen elementke múráját qılıw zárúrligi payda boladı. Usı jaǵdayda berilgen elementten aldın kelgen elementke múráját qılıw bir baǵıtlı dizimde qolaysız hám birazáste ámelge asırıladı hámde onı ámelge asırıw algoritmi quramalasadı.

21

Usı qolaysızlıqlardı joq etiw maqsetinde dizimniń hár bir buwınına jáne bir maydan qosıladı. Usı maydan mánisi ózinen aldın kelgen buwınǵa múrájátten ibarat boladı. Usı kórinistegi elementlerden ibarat bolǵan dinamikalıq strukturaǵa eki tárepleme baǵdarlanǵan yaki eki baǵıtlı dizim delinedi.

Eki baǵıtlı dizimniń hár bir elementi eki kórsetkishke iye. Birewi aldıńǵı elementke kórsetedi (keri), ekinshisi náwbettegi elementti kórsetedi (tuwrı) (sızılma).

Ulıwma alǵanda, eki baǵıtlı dizim bul elementleri sanı bir qıylı tek ǵana keri izbeizlikte jazılǵan eki bir baǵıtlı dizim esaplanadı.

Halqa tárizli eki baǵıtlı dizim

Programmalastırıwda eki baǵıtlı dizimlerdi kóbinese tómendegishe ulıwmalastırıladı: sońǵı buwın maydanınıń mánisi Rptr sıpatında bas buwınǵa múráját qılınadı, Lptr maydanı mánisi sıpatında sońǵı buwınǵa múráját qaraladı

Eki baǵıtlı dizim ústindegi ámeller:

-dizim elementin jaratıw;

-dizimde elementti izlew;

-dizimniń kórsetilgen jerine elementti qosıw;

-berilgen elementti dizimnen óshiriw.

Steklerdi bir baǵıtlı dizimler járdeminde ámelge asırıw

Qálegen bir baǵıtlı dizimdi stek dep qaraw múmkin. Lekin, dizim bir ólshemli massiv kórinisinde ańlatılǵanda, stekke salıstırǵanda ústinlikke (abzallıqqa) iye boladı. Sebebi, stekte massiv ólshemi aldınnan beriledi, dizimde bolsa ólshem aldınnan berilmeydi.

Dizimge engiziw múmkin bolǵan stek ámelleri

1)Stekke element qosıw ushın, dizim algoritminde Lst kórsetkishti Stack kórsetkishine ózlestiriw lazım (Push(S, X) ámeli).

P = GetNode Info(P) = X Ptr(P) = Stack Stack = P

2)Stektiń bos yaki bos emesligin tekseriw (Empty(S))If

Stack = Nil then Print ―Stek bos‖ Stop

3) Stekten elementti tańlaw (POP(S))P = Stack

X = Info(P) Stack = Ptr(P) FreeNode(P)

Paskalda ámelge asırıw: Stek

Lst kórsetkish ornına Stack kórsetkishinen paydalanıladı.

Element qosıw (Push (S, X)) prosedurası procedure Push(var Stack: PNode; X: Integer); var

P: PNode; begin New(P);

P^.Info:=X;

P^.Next:=Stack;

Stack:=P;

22

end;

Boslıǵın tekseriw (Empty)

function Empty(Stack: PNode): Boolean; begin

If Stack = nil then Empty:=True Else Empty:=False; end;

Element tańlaw (Pop) prosedurası procedure Pop(var X: Integer; var Stack: PNode);var

P: PNode; begin P:=Stack; X:=P^.Info;

Stack:=P^.Next;

Dispose(P);

end;

Dizimge engiziw múmkin bolǵan náwbet ámelleri

Dizim bası kórsetkishi sıpatında náwbet bası F kórsetkishi, dizim aqırǵı elementinkórsetiwshi kórsetkish sıpatında náwbet aqırı R kórsetkishi qaraladı.

1) Náwbetten elementti óshiriw ámeli (Remove(Q, X)).

Bilemiz, náwbette elementti óshiriw ámeli onıń basınan ámelge asırılıwı lazım.P = F F = Ptr(P)

X = Info(P)

FreeNode(P)

2)Náwbettiń boslıǵın tekseriw ámeli (Empty(Q))If F = Nil then Print ―Náwbet bos‖

Stop

3)Náwbetke element qosıw ámeli (Insert(Q, X)).

Náwbetke element qosıw onıń aqırınan ámelge asırılıwı lazım.P = GetNode

Info(P) = X

Ptr(P) = Nil

Ptr(R)= P R = P

Paskaldaǵı realizasiyası:

procedure Remove(var X: Integer; Fr: PNode); var

P: PNode; begin New(P); P:=Fr;

X:=P^.Info;

Fr:=P^.Next;

Dispose(P);

end;

function Empty(Fr: PNode): Boolean; begin

If Fr = nil then Empty:=True Else Empty:=False; end;

procedure Insert(X: Insert; var Re: PNode); var

P: PNode; begin New(P);

P^.Info:=X;

P^.Next:=nil;

23

Re^.Next:=P;

end;

Getnode, Freenode ámellerin payda etiw hám bosaǵan elementlerdi utilizasiya qılıw

Dizim menen islep atırǵanda kompyuter yadınan nátiyjelirek paydalanıw ushın, yaǵnıy kereksiz, paydalanılmaytuǵın elementlerdi shıǵarıp taslaw ushın, engizilip atırǵan dizimge uqsas erkli dizim jaratılıp alınadı. Bunda engizilip atırǵan dizim maydanı menen jaratıp alınǵan dizim maydanları formatı bir qıylı bolıwı lazım.

Eger engizilip atırǵan dizimler kóp bolıp olardıń formatı hár túrli bolsa, ol jaǵdayda hár bir engizilip atırǵan dizim ushın óz aldına erkli dizim jaratılıp alınıwı lazım.

Erkli dizimdegi elementler sanın, programma sheshilip atırǵan máselege qarap anıqlanıp alınıwı lazım. Ádette, erkli dizim mashina yadında stek kórinisinde payda etiledi. Bunda jańa elementti jaratıw (GetNode) bos stekten elementti tańlawǵa ekvivalent boladı, FreeNode ámeli bolsa bos stekke bosaǵan elementti qosıwǵa ekvivalent.

Oylayıq, bizden dizim bası kórsetkishi AVAIL bolǵan erkli dizimdi stek kórinisinde jaratıw talap qılınǵan bolsın (Súwretke qarań). Dizimniń bos elementin jaratıw hám dizimnen elementti bosatıw prosedurasın islep shıǵayıq.

GetNode ámeli

Dizimde kórsetkishi R bolǵan bos elementti jaratıw prosedurasın islep shıǵamız.

GetNode ámelin realizasiya qılıw ushın payda etilgen element kórsetkishine erkli dizim bası kórsetkishin ózlestiriw lazım bolıp, dizim bası kórsetkishin bolsa náwbettegi elementke ótkeriw zárúr.

P = Avail

Avail = Ptr(Avail)

Bul ámelin orınlawdan aldın, dizimde elementler bar yaki joqlıǵın tekseriw lazım. Erkli dizimniń boslıǵı (Avail = Nil) engizilip atırǵan dizimniń tolıqlıǵı menen ekvivalent.

If Avail = Nil then Print ―Tolıq‖ StopElse P = Avail

Avail = Ptr(Avail) Endif

FreeNode ámeli

Engizilip atırǵan dizimnen Nod(P) elementti FreeNode(P) ámeli arqalı shıǵarıpatırǵanda, ol erkli dizimge kiritiledi.

Ptr(P) = Avail Avail = P

Kóp baǵıtlı dizimlerde bosaǵan elementti utilizasiya qılıw

Egerde sızıqlı emes kóp baǵıtlı dizimnen paydalanılıp atırǵan bolsa, ol jaǵdayda dizimde bosaǵan elementti bos elementler jıyındısına standart ámeller arqalı qaytarıw hár dayım effektiv nátiyje bermeydi.

Kóp baǵıtlı dizimlerde bos elementlerdi utilizasiya qılıwdıń bir neshe jolları bar. Tómende usılardı keltirip ótemiz.

Birinshi jolı – esaplaǵıshlar (schetchik) usılı. Bunda kóp baǵıtlı dizimniń hár bir elementine usı elementke múrájátti esaplawshı esaplaǵısh (schetchik) maydanı qoyıladı. Eger element esaplaǵıshınıń kórsetkishi nol jaǵdayda hámde element kórsetkishi maydanı nil bolsa, ol jaǵdayda usı element bos elementler jıyındısına (kereksiz elementler qatarına) qaytarıladı.

Ekinshi usıl – kereksiz elementlerdi jıynaw usılı (marker usılı). Egerde qaysıdur element penen baylanıs ornatılǵan bolsa, ol jaǵdayda elementtiń bir bitli maydanına (marker) ―1‖, keri jaǵdayda ―0‖ jazıladı. Dizim tolıqlıǵı tuwralı signal kelgende, markeri nol bolǵan elementler qidiriledi, yaǵnıy kereksiz elementlerdi jıynaw programması iske

24

túsiriledi. Bunda programma ajratılǵan yadtıń barlıq bólegin qarap shıǵıp, marker menen belgilenbegen barlıq elementlerdi erkli elementler dizimine qaytaradı.

Bir baǵıtlı dizim ǵárezsiz maǵlıwmatlar strukturası sıpatında

Bir baǵıtlı dizimdi kóriw tek ǵana dizim basınan baslap izbe-iz túrde ámelge asırıladı. Egerde qaysıdur pozisiyaǵa kelip, onnan aldıńǵı elementti kórmekshi bolsaq, ol jaǵdayda jáne dizim basına qaytıw kerek boladı. Bul bolsa bir baǵıtlı dizimdi massiv túrindegi statistikalıq maǵlıwmatlar strukturasına nisbatan kamchiligini bildiredi. Sebebi, massiv turidagi statistikalıq strukturalarda qálegen elementke múrájátti ámelge asırıw múmkin. Egerde dizim elementleri sanı kóp bolıp, dizim ishine element qosıw kerek bolsa, ol jaǵdayda bunday struktura bir qansha artıqmashlıqqa iye ekenligin kóremiz.

Máselen:

Oylayıq, bar massivtiń 5–shi hám 6-shı elementleri arasına jańa X element qosıwtalap qılınǵan bolsın.

Usı jumıstı massivte ámelge asırıw ushın, X6 dan baslap massiv barlıq elementleri indekslerin bir birlikke arttırıw lazım. Nátiyjede tómendegishe massivke iye bolamız (qarań, sızılma):

Usı prosess sezilerli waqıttı alıwı múmkin.

Bir baǵıtlı dizimde bolsa bul prosess 2 kórsetkish mánisin ózlestiriw hám jańa elementti payda etiwden ibarat bolıp, usı ámellerge ketken waqıt turaqlı boladı hámde ol massiv elementleri sanına baylanıslı bolmaydı.

Dizimge element qosıw hám shıǵarıw

Oylayıq, dizimge element qosıw kerek. Bunıń ushın birinshi náwbette, jańa elementti dizimniń qaysı jerine qoyılıwı anıqlanadı, yaǵnıy sonday element anıqlanadı, jańa element onnan keyin qoyıladı. Jańa elementti qosıw InsAfter(Q, X) prosedurası járdeminde, óshiriw bolsa DelAfter(Q, X) prosedura arqalı ámelge asırıladı.

Bunda P jumısshı kórsetkish sonday elementti kórsetedi, onnan keyin jańa element qoyıladı yaki keyingi element óshiriledi (qarań, sızılma).

25

Mısal:

Oylayıq, dizimge jumısshı kórsetkishi R bolǵan elementten keyin informasiyalıqmaydanı X bolǵan jańa element qosıw talap qılınǵan bolsın.

Bunıń ushın:

1)Jańa elementti payda etiw zárúr.Q = GetNode

2)Payda etilgen elementtiń informasiyalıq maydanına X tıń mánisin ózlestiriw.Info(Q) = X

3)Payda etilgen elementti qosıw.

Ptr(Q) = Ptr(P)

Ptr(P) = Q

Joqarıda keltirilgen prosedura InsAfter(Q, X) bolıp esaplanadı.

Oylayıq, dizimge jumısshı kórsetkishi R bolǵan elementten keyingi elementóshiriliwi talap qılınǵan bolsın.

Bunıń ushın:

1)Óshirilip atırǵan element kórsetkishine Q mánisti ózlestiremiz.Q = Ptr(P)

2)X ózgeriwshide óshirilip atırǵan element informasiyalıq maydanı mánisinsaqlaymız. X = Info(Q)

3)Óshirilip atırǵan element kórsetkishi mánisin onnan keyin keliwshi elementmánisine ózgertemiz hám óshiriwdi ámelge asıramız.

Ptr(P) = Ptr(Q) FreeNode(Q)

Usı prosedura - DelAfter(P, X).

Joqarıda keltirilgen proseduralar Paskal tilinde tómendegi kóriniske iye boladı: procedure InsAfter(var Q: PNode; X: Integer);

var

Q: PNode; begin New(Q);

Q^.Info:=X;

Q^.Next:=P^.Next;

P^.Next:=Q;

procedure DelAfter(var Q: PNode; var X: Integer); var

Q: PNode; begin Q:=P^.Next;

P^.Next:=Q^.Next;

X:=Q^.Info;

Dispose(Q);

end;

Dizimler ústindegi ámellerge baylanıslı máseleler

1 másele.

26

Oylayıq dizimdi tekserip, onda informasiyalıq maydanı 4 ke teń bolǵan elementlerdi óshiriw talap qılınǵan bolsın.

R arqalı jumısshı kórsetkishti belgilep alamız, prosedura basında P = Lst. Sonday Q kórsetkish kiritemiz, ol R dan bir element keyinde júrsin. R kórsetkish kerekli elementti tapqanda usı element Q ge salıstırǵanda náwbettegi element sıpatında óshiriledi.

Q = Nil

P = Lst

While P <> Nil do If Info(P) = 4 then If Q = Nil then

Pop(Lst)

FreeNode(P) P = Lst

Else DelAfter(Q, X) EndIf

Else Q = P

P = Ptr(P) EndIf

EndWhile

2 másele.

Informasiyalıq maydanı ósiw tártibinde tártiplestirilgen dizim berilgen bolsın. Usı dizimge informasiyalıq maydanı X qa teń bolǵan sonday element qosıw talap qılınadı, payda bolǵan dizimde tártiplengenlik buzılmasın.

Oylayıq X = 16 bolsın. Baslanǵısh shártler: Q = Nil, P = Lst. Jańa element 3-shi hám 4- shi elementler arasına qoyılıwı lazım bolsın (joqarıdaǵı sızılma).

Q =Nil

P = Lst

While (P <> Nil) and (X > Info(P)) do Q = P

P = Ptr(P) EndWhile

if Q = Nil then Push(Lst, X) EndIf InsAfter(Q, X)

Keltirilgen mısallardı Paskal tilinde realizasiya qılıw:

1-másele:

Q:=nil;

P:=Lst;

While P <> nil do If P^.Info = 4 then begin

If Q = nil then begin Pop(Lst); P:=Lst;

end

Else Delafter(Q,X); End;

Else

27

begin Q:=P;

P:=P^.Next;

end;

end;

2- másele:

Q:=nil;

P:=Lst;

While (P <> nil) and (X > P^.Info) do begin

Q:=P;

P:=P^.Next;

end;

{Usı jerge element qoyıladı}If Q = nil then Push(Lst, X); InsAfter(Q, X);

End;

Sızıqlı emes baylanısqan strukturalar

Eger e kinshi kórsetkishler elementlerdiń qálegen tártibin anıqlasa, ol jaǵdayda e kibaǵıtlı dizimler de sızıqlı emes baylanısqan struktura boladı (sızılma).

LST1 – 1-shi dizim basına kórsetkish (P1 kórsetkish penen baǵdarlanǵan). Ol sızıqlıbolıp, 5 elementten ibarat.

2-shi dizim tap sol elementlerden ibarat bolıp, lekin olar tártibi qálegen izbe—izlikformasında. 2- shi dizim bası 3-shi element bolıp aqırı 2-shi element esaplanadı.

Ulıwma jaǵdayda dizim strukturasındaǵı element kóplegen kórsetkishlerge iye bolıwımúmkin, yaǵnıy qálegen sandaǵı elementlerge baǵdarlanǵan bolıwı múmkin.

Sızıqlı emes strukturanıń 3 parqlı belgisin ajıratıw múmkin:

1)Strukturanıń hár bir elementi basqa qálegen elementke múráját qılıw múmkin,yaǵnıy qálegen sandaǵı kórsetkishler maydanına iye bolıwı múmkin.

2)Strukturanıń berilgen elementine usı strukturanıń qálegen sandaǵı elementimúráját qılıwı

múmkin.

3) Múrájátler awırlıqqa, yaǵnıy múrájátler ierarxik kóriniske iye bolıwı múmkin.

Oylayıq, graf kórinisindegi diskret sistema berilgen bolsın. Bul jerde graftúyinleri bul jaǵdaylar, jaqları bir jaǵdaydan ekinshi jaǵdayǵa ótiw ( qarań, sızılma).

Sistemaǵa kiriw signalı bul X. Kiriw signalına tásir (reaksiya) Y shıǵıw signalınpayda etiw hám sáykes jaǵdayǵa ótiw bolıp esaplanadı.

28

Diskret sistema graf jaǵdayın sızıqlı emes eki baǵıtlı dizim kórinisinde súwretlew múmkin. Bunda informasiyalıq maydanǵa sistema jaǵdayı hám jaqları haqqındaǵı maǵlıwmatlar jazıladı. Element kórsetkishleri sistema jaqların logikalıq qáliplestiriwi kerek (qarań, sızılma).

Joqarıda keltirilgenlerdi ámelge asırıw ushın tómendegiler orınlanıwı kerek:

1)Sistema (1, 2, 3) jaǵdayın sáwlelendiriwshi dizimler jaratılıwı lazım;

2)Sáykes jaǵdaylardan jaqlar boyınsha ótiwdi sáwlelendiriwshi dizimler jaratılıwı

lazım.

Ulıwma jaǵdayda kóp baǵıtlı strukturalardı ámelge asırıw nátiyjesinde tor (set)payda boladı.

Qadaǵalaw sorawları.

1.Qanday dinamikalıq túrlerdi bilesiz?

2.Dinamikalıq obektlerdiń ózine tánligi neden ibarat?

3.Dinamikalıq strukturada elementler qanday baylanısqan?

4.Bir baǵıtlı dizimlerdiń ózine tánligi nelerden ibarat?

5.Sızıqlı dizimlerdiń halqa tárizli dizimlerden parqı?

6.Ne sebepten eki baǵıtlı dizimler kerek?

7.Bir baǵıtlı dizimlerdegi ámeller menen eki baǵıtlı dizimlerdegi ámellerdiń parqı?

8.Kórsetkish ne?

9.Dizim ústinde qanday stek ámellerin orınlaw múmkin?

10.Dizim ústinde qanday náwbet ámellerin orınlaw múmkin?

11.Getnode hám Freenode ámelleri nege arnalǵan?

12.Elementlerdi utilizasiya qılıwdıń qanday usılların bilesiz?

13.Bir baǵıtlı dizimge element kiritiw onıń elementleri sanına baylanıslıma?

14.Element qosıw yaki shıǵarıw prosessi qaysı jaǵdayda nátiyjelirek: dizimde yakimassivte?

15.Bir baǵıtlı dizimde elementlerdi kóriw qanday ámelge asırıladı?

29

16.AVAIL neni ańlatadı?

17.Massivke salıstırǵanda bir baǵıtlı dizimniń kemshiligi neden ibarat?

18.Qanday strukturalar sızıqlı emes esaplanadı?

19.Sızıqlı emes strukturalardıń ózine tánligi neden ibarat?

20.Sızıqlı emes baylanısqan strukturalardı qanday payda etiw múmkin?

21.Graf jaǵdayı ne?

30