Скачиваний:
2
Добавлен:
12.03.2025
Размер:
912 Кб
Скачать
☆

V)

 

 

 

 

 

 

 

 

 

 

 

 

 

X=7 P

 

 

 

 

 

 

 

 

 

 

9

null

 

 

 

 

 

 

 

 

 

 

lst

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

g)

 

 

X=7 P

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

null

 

 

 

 

 

 

 

 

 

 

 

 

lst

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

d)

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X=7 lst

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

9

null

e)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2-súwret

2g nı 2a den keltirip shıǵarıw ushın P=lst b) lst=ptrnxt(P) v)

x=info(p) g)

biraq algoritm tamamlanbadı sebebi P elede dizim burınǵı birinshi elementtin kórsetip tur. Biraq ol element endi dizimde joq ondaǵı informaciya x ǵa jaylasatuǵın fncenode(P) 2-súwret d)

Bul ámelden keyin node(P) elementke siltew qadaǵan etip hám ol bólistirilgen P bolatuǵın element kórsetkishi bolǵanı ushın oǵan siltew qadaǵan etiledi. Biraq ol element qaytadan bólistiriliwi múmkin getnode ámeli jańa element dúzedi al freenode bar elementi joq etedi.

Baylanısqan steklerdiń ámelge asırılıwı

Lekciya –7. Cikllı dizimler hám olar ústinde ámeller

Baylanısqan sızıqlı dizimler basqa maǵlıwmatlar strukturasına qaraǵanda paydalı bolsada onıń birneshe kemshilikleri de bar. Olardan biri sızıqlı dizimniń elementiniń kórsetkishi p nı bilsekte ol element node(p) nıń aldındaǵı elementti kóriwge ruxsat joq( yaǵnıy onıń ishindegini kóre almaymız, sebebi onıń adresin bilmeymiz). Eger dizim kórilip atırǵan bolsa, onda oǵan jáne qaytıp keliw ushın

,

dizimniń basın kórsetiwshi kórsetkish saqlanǵan bolıwı kerek.

Endi , meyli dizimniń eń keyingi elementiniń ptrnxt -adres bólimi null adres ornına birinshi elementtiń adresin kórsetsin, onda bunday dizimge cikllı dizim dep ataymız. Ol 1-súwrette kórsetilgen

10

1-súwret.

Nólinshi kórsetkishi bar dizimdi bos dizim dep ataymız. Cikllı dizim birinshi hám keyingi elementke iye emes delinedi. Sonlıqtan onıń birinshi yamasa keyingi elementin sırttan alınǵan kórsetkish penen anıqlawımız tiyis. Eger lst kórsetkishi birinshi elementti kórsetse ,onda onnan aldıńǵı element dizimniń sońı boladı, al kórsetkish keyingi elementti kórsetse onda dizimniń bası odan aldıńǵı element boladı.

lst Birinshi element

72106

76349

-1

98463

2-súwret.

Cikllı dizimdegi elementar ámeller menen tanısıp óteyik. X óz ishine alǵan elementti node(PNTR) elementinen keyin jaylastırıwshı insafter podprogramması hám node(PNTR) elementinen keyingi elementti shıǵarıp taslap onıń ishindegi maǵlıwmattı X ǵa beriwshi delafter podprogrammasın kóremiz.

Meyli PNTR dizimniń jalǵız elementin kórsetsin , eger dizim sızıqlı bolsa ,onda PTRNXT(PNTR) nolinshi mániske iye boladı hám shıǵarıp taslaw ámelin orınlaw múmkin emes. Biraq cikllı dizim ushın PTRNXT(PNTR) kórsetkish node(PNTR) elementin kórsetedi, sonlıqtan node(PNTR) elementi ózinen keyin ózi keledi. Bul jaǵdayda soraw tuwıladı node(PNTR) elementin dizimnen shıǵarıp taslaw kerek pe degen. Bunıń múmkinshiligi az sebebi delafter ámeli biriniń izinen biri keletuǵın eki elementtiń kórsetkishleri bar bolǵanda ǵana shaqırıladı. Delafter podprogramması cikllı dizimler ushın Beysik tilinde tómendegishe jazıladı

8000 ‗ podprogramma delafter

8010 ‗ vxodı: PNTR

8020 ‗ vıxodı: X

8030 ‗ lokalnıe peremennıe: FRNODE, Q 8040 ‗ esli PNTR=0 , to spisok pust

8050 IF PNTR=0 then print ―udalenie zapresheno‖: RETURN

8060 ‗ esli PNTR=PTRNXT(PNTR), to spisok soderjit tolko odin element 8070

PNTR=PTRNXT(PNTR) THEN PRINT ―udalenie zapresheno‖: RETURN 8080 Q=PTRNXT(PNTR)

8090 X=INFO(Q)

8100 PTRNXT(PNTR)=PTRNXT(Q)

8110 FRNODE=Q

8120 GOSUB 2000 : ‗ podprogramma freenode

8130 RETURN

8140 ‗ konec podprogrammı

Cikllı dizimniń eń keyingi elementinen keyin element jaylastırıwǵa insafter podprogrammasın qollanıwǵa bolmaytuǵının, al keyingi elementti shıǵarıp taslawǵa delafter podprogrammasın qollanıwǵa bolmaytuǵının atap ótemiz.

Cikllı dizimlerdiń elementlerin bosatıw, sızıqlı dizimlerge qaraǵanda ańsatıraq. Sızıqlı dizimde elementlerdi bosatıw ushın olardı birme bir kórip shıǵıw kerek. Cikllı dizimlerde olardıń elementlerin kórmesten bosatatuǵın freelist

podprogrammasın keltiremiz

9000 ‗ PODPROGRAMMA freelist

9010 ‗ vxodı: LST

9020 ‗ vıxodı: LST

11

9030 ‗ lokalnıe peremennıe: P 9040 P=PTRNXT(LST)

9050 PTRNXT(LST)=AVAIL

9060 AVAIL=0

9070 LST=0

9080 RETURN

9090 ‗konec podprogrammı

Usıǵan uqsas eki dizimdi biriktiriwshi CONCAT podprogrammanı dúziw múmkin. L1, L2 birinshi hám ekinshi dizimlerdiń kórsetkishleri bolsın.

10000 ‗ podprogramma CONCAT

10010 ‗ vxodı: L1,L2

10020 ‗ vıxodı: L1

10030 IF L2=0 THEN RETURN

10040 IF L1=0 THEN L1=L2: RETURN

10050 P=PTRNXT(L1)

10060 PTRNXT(L1)=PTRNXT(L2)

10070 PTRNXT(L2)=P

10080 L1=L2

10090 RETURN

10100 ‗ konec podprogrammı

Eger cikllı dizimdi kórip shıǵıw kerek bolsa , onda P=PTRNXT(P)

ámelin qaytalap orınlaymız, bul jerde P dizimniń basın kórsetiwshi kórsetkish. Biraq dizim cikllı bolǵanı ushın onı kóriwdiń tamamlanǵanlıǵın bile almaymız eger basqa bir kórsetkish LST cikldıń basın kórsetip , mına shárt P=LST orınlanbaǵansha.

Buǵan alternativ variant retinde cikllı dizimniń birinshi elementine baslama qoyıwdı kórsetiwge boladı. Onıń INFO bólimine ayrıqsha kodta jazılǵan baslama(zagolovok) jazıladı. 3-súwretke qarań.

3-súwret.

Lekciya –8. Eki tárepke baǵdarlanǵan dizimler hám olar ústinde ámeller

Cikllı dizimler sızıqlı dizimlerge qaraǵanda artıqmashlıqlarǵa iye bolsa da , olardıń da birneshe kemshilikleri bar. Olardı keri baǵıtta kórip shıǵıw múmkin emes. Berilgen dizim elementi ushın kórsetkish mánisi berilgen bolsada, onı dizimnen shıǵarıp taslaw múmkin emes. Sonıń ushın bunday múmkinshiliklerge iye bolǵan dizimdi qaraymız hám onı eki tárepke baǵdarlanǵan dizimler dep ataymız. Bunday dizimniń hár bir elementi eki kórsetkishke iye boladı. Kórsetkishtiń birewi aldıńǵı elementti, al ekinshisi keyingi elementti kórsetedi. Tiykarında eki tárepke baǵdarlanǵan dizimlerde birinshi hám sońǵı element túsinigi joq, sebebi ol simmetriyalı boladı. Eki tárepke baǵdarlanǵan dizimler sızıqlı, cikllı bolıwı múmkin hám olar baslamalı yamasa baslamasız boladı.

null

12

a) eki tárepke baǵdarlanǵan sızıqlı dizim

b) eki tárepke baǵdarlanǵan cikllı dizim

Baslama

v) eki tárepke baǵdarlanǵan baslamalı cikllı dizim

Cikllı dizimlerde dizimdi bastan ayaq kórip shıǵıw ushın onıń elementiniń kórsetkishi P bolǵanda P=PTRNXT(P) ámelin qaytalap orınlaw jetkilikli.Biraq dizim cikllı bolǵanı ushın onıń sońına kelgenimizdi biliwimiz ushın onıń birinshi elementin kórsetiwshi sırtqı kórsetkish LST mánisi P ǵa teń e kenin tekseremiz. Yamasa alternativ variantta cikllı baslamalı bolǵanda onıń

birinshi elementiniń INFO bóliminde ayrıqsha kod jazılǵan boladı. Eki tárepke baǵdarlanǵan dizimler elementleri úsh maydannan ibarat boladı: shep maydan, INFO maydanı, oń maydan. Eki tárepke baǵdarlanǵan cikllı dizimlerge elementler kiritiw hám shıǵarıw podprogrammaların keltiremiz.

Eger P qálegen element kórsetkishi bolsa, onda left(right(P)) = P = right(left(P))

simmetriyalıq qásiyetin beredi.

Ádettegi baylanısqan dizimlerde orınlawǵa bolmaytuǵın, biraq eki tárepke baǵdarlanǵan dizimlerde orınlanatuǵın ámel bul berilgen elementti onıń kórsetkishiniń mánisi boryınsha dizimnen shıǵarıw esaplanadı. Tómende Beysik tilinde berilgen podprogrammada PNTR kórsetkish kórsetken element dizimnen shıǵarıladı hám ondaǵı maǵlıwmat X ózgeriwshisine beriledi.

15000 ‗ podprogramma delete (dlya dvunapravl svyazannogo spiska

15010 ‗ vxodı: PNTR

15020 ‗ vıxodı: X

15030 ‗ lokalnıe peremennıe FRNODE, Q , R

15040 IF PNTR=0 THEN PRINT ‖udalenie zapresheno ―: RETURN 15050 X=INFO(PNTR)

15060 Q=PTRNXT(PNTR,LEFT)

15070 R=PTRNXT(PNTR,RIGHT)

15080 PTRNXT(Q,RIGHT)=R

15090 PTRNXT(R,LEFT)=Q

15100 FRNODE=PNTR

15110 GOSUB 2000 ‗ podprogramma FREENODE

15130 ‗ konec podprogrammı

Endi node(PNTR) elementiniń oń tárepine informaciyalıq maydanında X bar element jaylastırıwshı insertright podprogrammasın keltiremiz.

13

16000 ‗ podprogramma insertright

16010 ‗ vxodı: PNTR, X

16020 ‗ vıxodı: net

16030 ‗ lokalnıe peremennıe GTNODE, Q , R

16040 IF PNTR=0 THEN PRINT ‖udalenie zapresheno ―: RETURN

16050 GOSUB 1000‘ podprogramma GTNODE ustanavl peremennuyu GTNODE

16060 Q=GTNODE

16070 INFO(Q)=X

16080 R=PTRNXT(PNTR,RIGHT)

16090 PTRNXT(R,LEFT)=Q

16100 PTRNXT(Q,RIGHT)=R

16110 PTRNXT(Q,LEFT)=PNTR

16120 PTRNXT(PNTR,RIGHT)=Q

16130 RETURN

16140 ‗ konec podprogrammı

Dizimniń shep tárepine element jaylastırıwshı insertleft podprogramması usıǵan uqsas

boladı.

Lekciya –9.Rekursiv anıqlamalar hám processler

Matematikada kóplegen obektler sol obektt payda etiwshi bazıbir process arqalı anıqlanadı. Máselen π sanın sheńber uzınlıǵınıń diametrge qatnası retinde anıqlaydı , yaǵnıy ámellerden ibarat process arqalı anıqlanadı. Bazıbir anıqlawshı processtiń mısalı retinde faktorial esaplawdı qaraymız. Eger pútin oń san n berilgen bolsa, onda n faktorialı 1 den n shekemgi sanlardıń kóbeymesi retinde anıqlanadı. Mısal ushın 5 tiń faktorialı 5*4*3*2*1= 120 teń, al 3 tiń faktorialı 3*2*1 = 6 teń. 0 diń faktorialı 1 teń dep anıqlanǵan. N niń faktorialı

N!= n*(n-1)*(n-2)* …*1, eger n>0 bolsa.

Bul anıqlamaǵa dıqqat penen qaraǵanımızda faktorialdı bılayınsha anıqlawǵada bolatuǵının kóremiz

1! = 1* 0! 2! = 2* 1! 3! =3*2!

…………

n! = n* (n-1)!

Bunda faktorial ózi arqalı anıqlanıp atırǵanın kóremiz.

Rekursiv anıqlama dep obektti onıń ápiwayı jaǵdayı anıqlaması menen anıqlawǵa aytamız. Faktorialdı joqarıda kórsetilgenindey rekursiv anıqlawǵa boladı.Endi onıń algoritmin keltireyik.

1 if n=0 then fact=1 return

2else

3x=n-1

4nayti znachenie x! I nazvat ego Y

5fact= n*y return

6endif

Bul rekursiv algoritm bolıp, onda tiykarǵı 4 jol esaplanadı. Ol jerde esaplaw ushın faktorialdı esaplanǵan nátiyjeden paydalanıladı. Eger ol basqa ekinshi mashinada esaplanadı dep uyǵarsaq ,onda onnan aldıńǵısı 3 shi mashinada orınlanıwı kerek

boladı.Solay etip 0! Ǵa shekem process dawam etedi. Haqıyqatda bolsa algoritm bir

14

mashina tárepinen orınlanadı sonlıqtan algoritm rekursiv bolıp onıń Paskal tilindegi variantın keltiremiz

functionF(I:integer): integer; begin if I>0 then F:=I*f(I-1) else F:=1

end

Rekursiya algortmlerde hámme waqıttta nátiyjeli bola bermeydi. Joqarıdaǵı faktorial esaplawshı algoritmdi iteraciya jolı menen effektiv esaplawǵa boladı hám ol tómendegishe boladı

I:=0; F:=1; While I<n do

Begin I:= I+1; F:= I*F end

Biz bul jerde bul mısaldı rekursiyanı túsindiriw ushın alǵan edik. Rekursiv algoritmge jáne bir mısal Fibonachchi sanların esaplaw algoritmin qarayıq.Fibonachchi sanları dep ózinen aldıńǵı eki sannıń qosındısına teń bolǵan sanǵa aytamız

0,1,2,3,5,8,13,21,34,….

Onıń algoritmi

Fib(n)=n eger n=0 yamasa n=1 bolsa, Fib(n) =fib(n-1) + fib(n-2) eger n>=2 bolsa.

Ózin-ózi eki márte shaqırıwshı rekursiv algoritmdi alamız.Endi jáne bir mısal retinde Xanoy minarası máselesin alayıq. Onda 3 tayaqsha berilgen bolıp ,olardıń birinde biriniń ústine biri jaylasqan kishirip barıwshı diskilerdi úshinshi tayaqshaǵa ótkeriw kerek boladı. Diskiniń kishisiniń ústine úlkenin qoyıwǵa bolmaydı. Birinshi tayaqshanı –A de, ekinshisin –V de, al úshinshisin S- dep alıp, olardı

A- source V- aux S- dest

dep belgileymiz. 1-súwretti qarań.

A V S 1-súwret.

Bul másele algoritminiń podprogrammasın keltireyik

Subroutine towers(n, source,dest,aux)

If n=1 then print ‖peremestit disk 1 s source na dest ― Return Endif

Towers(n-1, source, aux, dest)

Print ― peremestit disk n s source na dest ― Towers(n-1, aux, dest, source)

return

Juwmaqlap aytqanda rekursiv algoritm yamasa anıqlama durıs dep aytıladı eger onıń ózinózi shaqırıwı shekli bolsa. Onıń ushın rekursiv algoritmde ózin-ózi shaqırıwdıń sheksiz izbeizliginen sırtqa shıǵıw jolı bolıwı kerek. Faktorial

15

mısalında onıń rekursiv emes bólegi 0!=1 bolǵanda shıǵıp ketiw. Xanoy minarası máselesinde If n=1 then print ‖peremestit disk 1 s source na dest ―

Jol arqalı process toqtatıladı. Ekinshiden rekursiv anıqlamanıń tiykarǵı qurawshısı retinde ondaǵı quramalı jaǵdaydı ápiwayı jaǵday arqalı ańlatıw esaplanadı.

Lekciya –10. Maǵlıwmatlardıń binar terek túrleri

Binar terek dep bos bolǵan yamasa túbir dep atalıwshı birinshi elementke iye bolıp, qalǵan elementleriniń hár biri kesilispeytuǵın eki úles kópliklerge bólingen shekli elementler kópligine aytamız. Bul úles kóplikler dáslepki terektiń shep hám oń úles kóplikleri delinedi.

. Binar terektiń hár bir elementi terek túyini delinedi. 1- súwrette binar terekti súwretlew keltirilgen.

A

V

 

 

 

C

 

 

D

 

 

 

 

 

 

 

F

 

 

E

 

 

 

 

H

 

 

 

G

I

 

 

 

 

 

 

1-súwret Binar

 

B

D

 

E

terek Binar

 

 

 

 

F

terek emes

 

 

E

 

 

 

 

 

 

C

 

D

 

 

 

 

A

 

 

 

 

 

 

 

C

 

B

 

 

A

 

 

 

 

 

I

F

 

 

 

G

 

 

 

 

G

Qatań binar terek

1-súwrettegi terek 9 túyinnen ibarat. A-terek túbiri onıń shep úles teregi V túbirge, al ońı S túbirge iye. Bul A- dan shıǵıwshı eki shaqa menen sheptegi V ǵa ońdaǵı S- ǵa

baradı. V onıń shep yamasa oń úles teregi bolsın, onda A – V- nıń jolı, V shep yamasa oń balası delinedi. Balalarǵa iye bolmaǵan túyin japıraq (list) dep ataladı. n1-túyin n2túyinniń atası dep ataladı. Eger n1 n2 niń ákesi yamasa ákesiniń ákesi bolsa. Máselen A –G nıń atası, N-S niń urpaǵı. n2túyin n1 túyinniń shep urpaǵı delinedi eger n2 n1 diń shep balası yamasa n1 shep balasınıń urpaǵınan bolsa eki túyin aǵalı inili delinedi eger olar bir ákeniń balası bolsa. Eger binar terektiń hár bir japıraq bolmaǵan túyini

16

bos emes oń hám shep úles terekke iye bolsa onda qatań binar terek delinedi. Qatań binar terek n japıraqqa iye bolsa onda hámme waqıtta 2n-1 túyinge iye boladı. Binar terekte túyinler dárejesi bılay anıqlanadı. Terek túbiri 0 shi dárejede, basqa qálegen túyin dáriyjesi óziniń ákesiniń 1 dáriyjesinen artıq boladı. E – 2 dáret, N – 3 dáret túyinler

Binar terektiń tereńligi dep onıń japraqlarınıń maksimal dárejesine aytamız. n dárejedegi tolıq binar terek – bul sonday terek bolıp ondaǵı n nen kishi dáriyjedegi hár bir túyin japıraq bolıp, n nen kishi dáriyjedegi hár bir túyin bos emes shep hám oń úles terekke iye boladı.

Derlik tolıq binar terek dep sonday binar terekke aytamız, sonday teris emes pútin K sanı bar bolıp

1.Terektiń hár bir japraǵı K yamasa K+1 dáriyjege iye

2.Eger túyin K+1 dárejedegi oń urpaqqa iye bolsa onda onıń barlıq shep urpaqları japıraq bolıp K+1 dárejege iye boladı.

A

C F

V G

E

D

H I J L N

N K

O

3 dárejeli tolıq binar terek. 4-súwret

A

E

C

G

H

F

buzılǵan D

A

a) Qatań binar terek derlik

tolıq emes binar terek 1 shárt 5-

súwret

V

E

I C

I

H

G

F J K

H

 

17

b) Qatań binar terek derlik tolıq emes ( 2- shárt buzıldı)

 

A

V

 

 

C

D

 

 

F

H

G

I

E

 

v) Qatań binar terek derlik tolıq binar terek

 

A

 

I

 

C

d)

E G F

V

D

A

V

C

D F

I

J

H

E G

g) Derlik tolıq binar terek qatań emes lev sın= uzv otec

prav sın = uzv otec+1

Derlik tolıq qatań binar terek n – japıraqlı 2n-1 túyinge iye boladı. Derlik tolıq binar terek qatań emes n japıraqlı 2ntúyinge iye boladı. n - túyinge derlik tolıq binar terek qatań binar terek boladı eger n- taq bolsa. Binar terek ushın elementar ámeller orınlı. Eger nd túyinge iye binar terektiń kórsetkishi p bolsa, onda info(p) funkciyası nd túyinniń ishindegi maǵlıwmattı bildiredi. left(p), right(p), father(p) hám brother(p) funkciyaları sáykes túrde nd túyinniń shep balası, oń balası, atası hám inisiniń kórsetkishlerin ańlatadı. Bul funkciyalar bos kórsetkishti anıqlaydı, eger nd túyin shep balaǵa, oń balaǵa, atası hám inisine iye bolmasa.

Logikalıq funkciyalar isleft(p) hám isright(p) true mániske iye boladı eger nd túyin bazı bir túyinniń sáykes túrde shep yamasa oń balası bolsa eger onday bolmasa onda ol funkciyallar false (jalǵan) mánisin qabıl etedi.

isleft(p), isright(p), hám brother(p) funkciyaların left(p), right(p), father(p) funkciyaları járdeminde ámelge asırıwǵa boladı.

isleft(p) funkciyası algoritmi

18

function isleft(p) q=father(p)

if q=null then isleft= false

else if left(q)=p then isleft= true else isleft false

end if end if return

Usıǵan uqsas isright funkciyasın jazıw múmkin. brother(p) funkciyası algoritimi

function brother(p) if father(p)=null then brother(p)=null else if left(p)

then brother = right (father(p)) else brother = left (father(p)) end if

end if return

Binar tereklerdi dúziwde make tree, set left, set right ámelleri paydalı boladı. make tree(x) funkciyası informaciyalıq maydanda x bolǵan bir túyinli binar terek dúzedi hám onıń túyini kórsetkishin anıqlaydı. set left(p,x) funkciyası informaciyalıq maydanda x bolǵan shep balası bolmaǵan nd túyinge iye binar Terek ushın onıń shep balasın dúzedi.

set right(p,x) funkciyası p kórsetkish binar terektiń oń balasın dúzedi. Binar terektiń qollanılıwına mısal kóremiz.

Binar terek eki jaǵdaydan birewin tańlap alıwda jaqsı járdem beredi. Eger bizge sanlar dizimi berilgen bolıp olar ishinen barlıq dublikatlardı anıqlaw kerek bolsın. Bunı sheshiw ushın sanlardıń hár birin onnan aldınǵısı menen salıstırıp tabıwǵada boladı, biraq bunda kóp salıstırıw kerek boladı. Eger binar terek qollansaq sanın azaytıw múmkin.

Sheshiliwi: birinshi sandı alıp onı túyinge jaylastıramız hám onı Terek túbiri dep esaplaymız. Onnan keyingi hár bir san túbirdegi san menen salıstırılıp eger ol san teń bolsa dublikat dep esaplanadı eger ol san túbirdegi sannan kishi bolsa onda túbirdiń shep balasına, al úlken bolsa oń balasına jaylastırıladı. Odan keyingi san túbirden kishi