Professional Documents
Culture Documents
Տվյալների կառուցվածք
Տվյալների կառուցվածք
CTeKH u ociepeJJ:H
CTeKH
OnepaQHjf BCTaBKH INSERT npHMeHHTeJibHO K CTeKaM qacTO Ha3bIBaeTCjf 3aTIHCblO
B CTeK PUSH, a onepauHjf y,n:aJieHHjf DELETE, KOTOpM Bbl3bIBaeTCjf 6e3 nepe,n:aqH ap
ryMeHTa, - CHjfTHeM co CTeKa POP.
KaK BHJJ:HO H3 pHC. 10.1, CTeK, cnoco6HbIH BMeCTHTb He 6orree n 3JieMeHTOB, MO:>KHO
peaJIH3OBaTb C TIOMOII.J,blO MaCCHBa S[l .. n]. 3TOT MaCCHB o6rra,n:aeT aTpH6YTOM top, s.
npe,n:cTaBAAIOII.J,HM co6ou: HH,n:eKC nocrre,n:Hero TIOMemeHHOro B CTeK 3JieMeHTa. CTeK
cocTOHT H3 3JieMeHTOB S[l .. S. top], r.n:e S[l] - 3JieMeHT Ha ,n:He cTeKa, a S[S. top]
- 3JieMeHT Ha ero BepIIIHHe.
EcrrH s.top =
0, TO CTeK He co,n:ep:>KHT HH OJJ:HOro 3JieMeHTa H jfBJijfeTCjf nycmblM
(empty). IlpOTeCTHpOBaTb CTeK Ha HaJIHqHe B HeM 3JieMeHTOB MO:>KHO C IlOMOW:blO one-
PoP(S)
1 if STACK-EMPTY(S)
2 error '�derflow"
3 else S. top = S. top - 1
4 return S[S. top+ l]
Qqepe.z.u
□pHMeHHTeJil,HO IC 011epe)VIM onepauH.R BCTaBKH H83blBaeTCJI ENQUEUE (noMe
CTHTb B 011epeJJ.b), a onepaurui: y.naneHH.R - DEQUEUE (BblBeCTH H3 011epeJJ.H). □OJJ.06Ho
cTeKosou onepauHH POP, onepau.H.R DEQUEUE He -rpe6ye-r nepeJJ.a1m JJieMeHTa MaccH
Ba B BH)].e apryMeHTa. BnaroJJ.ap.R CBOHCTBY FIFO O11epeJJ.h noJJ.o6Ha, HanpHMep, )l(HBOH
o'lepenit K epa'I)' B nOJIHMHHmce. Y Hee HMeIOTCJI zOJ1011a (head) H xsocm (tail). Koma
3JieMeHT llOMemaerc.11 8 O'lepe,11,1,, OH 3aHHMaeT MeCTO B ee XBOCTe, TO'IHO Tak )Ke,
KaK 'ICJIOBeK 3aHHMaeT O'lepe.zu, nocJiellHHM, 'ITOObJ nonacTb Ha npHeM K epa'I)'.
Jfa O'lepenH seer.a.a BLIBO.[I.HTCJI JJieMeHT, KOTOphlH HaxOnitTCJI 8 ee fOJIOBHOH
'laCTH aHaJIOnt'lHO TOMy, KaK s Ka6HaeT spaqa scema 3axo.a.HT 6om.Hon, KOTopLIH
X<,ll;aJI .a.om.we scex.
Ha pHc. I 0.2 nOKa3att O.U.HH H3 cnoco6os, KOTOphlM 003BOilJleT C noMOJ.UblO MaCCHBa
Q[l .. n] peaJIH30BaTb O'lepe.iu,, COCTO�yIO He 6onee 'leM H3 n - 1 3JieMeHTOB. 3Ta
oqepe,a.b o6na.a.aer arpu6yroM Q. head, KOTOphln JIBillleTCJI HIUleKCOM ronoBHoro JJie
Meura IUIH yKaJaTeJieM Ha Hero; arpu6yr Q. tail H}U(eKcttpyer MeCTOOOJIO)KeHHe,
KY· .a.a 6y)leT .no6aBJUITbCJI HOBLIH 3JICMCHT. 3neMeHTbJ oqepe,nH pacnoJIO)l(eHbl B
Jl'leHKax Q. head, Q. head+ 1, ... , Q. tail - 1, KOTOp1>1e UHKJIH<i:ecKH JaMKHyr1>I B TOM
CMbIC· ne, 'ITO JllieHICa 1 cne.nyer cpaJy )Ke nocne Jl'ICHKH n B UHKJIH'leCKOM
nop,uuce. IlpH BhlnonHeHHH ycnoBHJI Q. head = Q. tail 011epe,n1, nycra. lhHa'laJibHO
s1,moJIHJ1eTCJ1 cooTHomeeue Q. head = Q. tail = 1. EcJIH oqepe,n1, nycra, TO npu
nollblTKe )')].aJIHTb H3 Hee JJieMeHT npoHCXO.a.HT omH6Ka onycromeHH.11. EcnH Q. head
= Q. tail+ I, HJIH Q. head = 1 H Q. tail = Q. length, TO 011epe,!1,b 3anonHeHa, H noabITKa
,!1,o6asHTb B Hee 3JICMCHT npHBO.[I.HT K ee nepenonHeHHIO.
B Hawux npoue.nypax ENQUEUE H DEQUEUE nposepKa own6oK onycroweHHJI
H nepenonHeHHJI He npOBOnJ{TCJI. (B ynp. I 0.1.4 npe)].JlaraeTCJI ,!1,06aBHTb B
npoue.nypbI coorsercreyiomuu K0,!1,.) B nces,noKo,!l,e npe.nnonaraerc.11, 'ITO n = Q.
length.
10.2. CeH3auui.1e cnucacu
LIST-INSERT (L, x)
1 x. next = L.head
2 if L.head =/- NIL
3 L.head.prev = x
4 L.head = x
5 x.prev = NIL
(BcnOMHHTe, qTQ Harna 3aTIHCb aTJ)H6yroB ,n:onycKaer KaCKa,n:HpOBaHHe, TaK qTQ
L. head. prev O3Haqaer aTJ)H6yr prev om,eKTa, Ha KOTOpbIH }'Ka3hIBaer aTJ)H6yr
L. head.) BpeMH pa60TbI LIST-INSERT co cnHCKOM H3 n 3JieMeHTOB paBHO 0(1).
LIST-DELETE (L, x)
1 if x. prev =/- NIL
2 x.prev. next = x. next
3 else L. head = x. next
4 if X. next =/- NIL
5 x. next.prev = x.prev
Ozpa11u11umenb(sentinel) - 3TO q>HKTHBHhIH 061,eKT, ynpomaromHu: }"Ier rpaHHqHbIX ycJIOBHH.
HanpHMep, npe,n:noJIO:>KHM, qrn B crrHCKe L rrpe.n:ycMOTJ)eH om,eKT L. nil, rrpe,n:CTaBIDIIOillHH
3HaqeHHe
NIL, HO rrpH 3TOM co,n:ep:>KalllHH Bee aTJ)H6yrbl, KOTOpbie HMelOTCjf y .n:pyrHX 3JieMeHTOB. Kor.n:a B KO,n:e
npOHCXOJJ:HT o6pameHHe K 3HaqeHHIO NIL, OHO 3aMeIDiercg o6pameHHeM K orpaHHqHTeJIIO L. nil. KaK
TIOKa3aHO Ha pHC. 10.4, HaJIHqHe orpaHHqHTeIDI npeo6pa3yer 06bJqHblH ,n:Ba:>K,n:bl CBjf3aHHblH CilHCOK B
U,UIUIU'leCKUU d6a:»edbl c6.RJaHHWii cnucoK c ozpa11u11umeneM. B TaKOM cnHcKe orpaHHqHTeJih L. nil
pacnoJio:>KeH Me:>KJJ:Y roJIOBOH H XBOCTOM. ATJ)H6yr L. nil. next yi<a3bIBaer Ha roJiosy cnHcKa, a
aTJ)H6yr L. nil. prev - Ha em XBOCT. AHaJiornqHo aTJ)H6yrhl next XBOCTosoro 3JieMeHTa H prev
roJIOBHOro 3JieMeHTa yi<a3bIBaIDT Ha 3JieMeHT L. nil. IloCKOJibKY aTJ)H6yr L. nil. next }'Ka3bIBaer Ha
roJiosy cnHcKa, MO:>KHO ynpa3,n:HHTb aTpH6yr L. head, 3aMeHHB CCbIJIKH Ha Hero CCbIJIKaMH Ha L. nil.
next. KaK BHJJ:HO Ha pHC. 10.4, (a), nyCTOH CTIHCOK co,n:ep:>KHT TOJlbKO orpaHHqHTeJib, H KaK L. nil. next,
TaK H L. nil. prev }'Ka3hIBaIDT Ha L. nil.
(a) L.nil�
LIST-SEARCH' ( L, k)
l x = £.nil.next
2 while x -1- L. nil H x.key -1- k
3 x = x.next
4 return x
LIST-INSERT (L, x)
TREE-MINIMUM(x)
I while x. left f NIL
2 x = x.left
3 return x
TREE-MAXIMUM(x)
I while x. right f NIL
2 x = x.right
3 return x
BCTIBKI
TREE-INSERT(T, z) TREE-DELETE(T, z)
1 y = NIL I if z. left == NIL
2 x = T.root 2 TRANSPLANT(T, z, z. right)
3 while x -/- NIL
3 elseif z. right == NIL
4 y=X
4 TRANSPLANT(T, z, z. left)
5 if z.key < x.key
6 x = x.left 5 else y = TREE-MINJMUM(z.right)
7 else x = x.right 6 ify.p#z
8 z.p = y 7 TRANSPLANT(T, y, y. right)
9 if y == NIL 8 y. right = z. right
10 T.root = z 9 y.right.p =y
11 elseif z.key < y. key 10 TRANSPLANT(T, z, y)
12 y.left=z
else y. right = z
II y. left = z. left
13
12 y.left.p =y
D1aea 13. Kpacuo-11epuL1e .l(epeBLH
B rnaee 12 61,mo IIOKa.JaHo, 'ITO 6HHapHhle .nepeBMl noHCKa BhlCOThl h pearru3y
lOT ece 6a.JOBhie onepaU:HH Ha,IJ; ,IJ;HHaMH'leCKHMH MHO)l(eCTBaMH, TaKHe KaK SEARCH,
PREDECESSOR, SUCCESSOR, M INIMUM, MAXIMUM, INSERT H DELETE, co epeMe
HeM pa60Thl 0( h). TaKHM o6pa30M, onepaU:HH BhinOJIH.IIIOTC.11 TeM 6b1cTpee, 'leM MeHh
we BblCOTa .nepeea. 0}:lHaKO B HaHX�llleM cnyqae npOH380,IJ;HTeJihHOCTh 6HHapHOI'O
,ll.epeea IIOHCKa 0Ka3hIBaeTC.II HH'l)'Th He nyqmeif, 'leM npOH3B0)lHTeJihHOCTh CB.113aHHO
ro CIIHCKa. KpacHO-'lepHbie )lepee1,.11 npe.ncTaBJllllOT co6oii OJlHY H3 MHO)l(eCTBa "c6a
rraHCHpOBaHHhlX" cxeM )lepeBbeB nOHCKa, KOTOpble rapaHTHpyror epeM.11 BbinOJIHeHHll
orrepaUHH Ha,IJ; ,IJ;HHaMH'leCKHM MHO)l(eCTBOM O(lg n) .na)l(e B HaHxy.nmeM cnyqae.
RB-INSERT-FIXUP (T, z)
l while z.p. color == RED
2 ifz.p==z.p.p.left
3 y = z.p.p.right
4 if y. color == RED
5 z.p.color = BLACK // CJJ)"laH I
6 y. color = BLACK // CJJ)"lan I
7 z.p.p. color = RED II CJJ)"laii I
8 z = z.p.p II Cn)"laii I
9 else if z == z.p. right
IO z = z.p II Cn)"lan 2
11 LEFT-ROTATE (T, z) II CJJ)"laH 2
12 z.p.color = BLACK II CJJ)"laH 3
13 z.p.p. color = RED II Cn)"latt 3
14 RIGHT-ROTATE(T,z.p.p) II CJI}"lau 3
15 else (TO )Ke, 'ITO H B 'laCTH then, HO c JaMeHoH
"npasoro" (right) "nesblM" (left) H Hao6opoT)
16 T. root. color = BLACK