huglægt skipulag gagna · 2006. 10. 30. · • gagnagrind ætti aðeins að nota í gegnum...
TRANSCRIPT
-
Kafli 8
Huglægt skipulag gagna
© 2007 Pearson Addison-Wesley.All rights reserved
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-2
Kafli 8: Huglægt skipulag gagna
• 8.1 Grunnatriði gagnagrinda (data structures)• 8.2 Útfærsla gagnagrinda• 8.3 Stutt sýnidæmi• 8.4 Sérhannaðar gagnagrindur• 8.5 Klasar og hlutir• 8.6 Bendar í vélarmáli
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-3
Grunngagnagrindur
• Einsleitt fylki (homogeneous array)• Sundurleitt fylki (heterogeneous array)• Listi
– Stafli (stack)– Biðröð (queue)
• Tré (tree)
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-4
Mynd 8.1 Listar, staflar og biðraðir
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-5
Helstu lista hugtök
• Listi: safn gagna þar sem stökin eru geymd íröð
• Haus (head): fremst í listanum• Hali (tail): aftast í listanum
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-6
Helstu stafla hugtök
• Stafli (stack): listi þar sem stökin eru sett inn og tekin út að framan
• LIFO: "last-in-first-out"• Toppur (top): haus listans (staflans)• Botn (bottom): hali listans (staflans)• Pop: taka stak af toppnum• Push: setja inn stak á toppinn
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-7
Helstu biðraðar hugtök
• Biðröð (queue): listi þar sem stökin eru sett inn í halann og tekin út á hausnum
• FIFO: "first-in-first-out"
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-8
Mynd 8.2 Dæmi um skipulagstré
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-9
Helstu tré hugtök
• Tré (tree): safn gagna þar sem stökin eru geymd í trjáskipulagi
• Hnútur (node): stak í trénu• Rótarhnútur (root): Efsti hnúturinn• Lauf (leaf): Hnútur neðst í trénu
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-10
Helstu tré hugtök (framh.)
• Foreldri (parent): hnúturinn beint fyrir ofan tiltekinn hnút
• Barn (child): hnútur beint fyrir neðan tiltekinn hnút
• Forfaðir (ancestor): foreldri, foreldri foreldris, o.s.frv.
• Niðji (descendent): barn, barnabarn, o.s.frv.• Systkini (siblings): hnútar með sama foreldri
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-11
Helstu tré hugtök (framh.)
• Tvíundartré (binary tree): tré þar sem hver hnútur hefur mest tvö börn
• Dýpi (depth): fjöldi hnúta í lengstu leið frá rót til laufs
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-12
Mynd 8.3 Tré hugtök
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-13
Fleiri hugtök
• Kyrrleg (static) gagnagrind: stærð og lögun gagnagrindarinnar breytist ekki
• Kvikleg (dynamic) gagnagrind: stærð og lögun gagnagrindarinnar getur breyst
• Bendar (pointers): notaðir til að staðsetja gögn
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-14
Mynd 8.4 Bækur raðaðar eftir titli, en tengdar eftir höfundi
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-15
Geymsla fylkja
• Einsleit fylki– Línuröð (row-major) eða dálkröð (column-major)– Vistfangsmargliða
• Sundurleit fylki– Einstakir hlutar geymdir hver á eftir öðrum í
samfelldu minnissvæði– Einstakir hlutar geymdir á mismunandi stöðum og
vísað í þá með bendum
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-16
Mynd 8.5 Fylki með hitastigs-gildum geymt í minni sem byrjar í vistfangi x
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-17
Mynd 8.6 Tvívítt fylki með fjórum línum og fimm dálkum geymt í línuröð
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-18
Mynd 8.7 Geymsla á sundurleita fylkinu Employee
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-19
Geymsla á listum
• Samfelldur listi: listi sem er geymdur íeinsleitu fylki
• Tengdur listi (linked list): listi þar sem stökin eru tengd með bendum– Hausbendir (head pointer): bendir á fyrsta stak
listans– NULL bendir (NIL pointer): ólöglegt bendagildi
sem notað er til að tákna enda listans
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-20
Mynd 8.8 Nöfn geymd í minni sem samfelldur listi
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-21
Mynd 8.9 Skipulag tengds lista
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-22
Mynd 8.10 Eyðing staks úr tengdum lista
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-23
Mynd 8.11 Innsetning staks ítengdan lista
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-24
Geymsla stafla og biðraða
• Staflar oftast geymdir sem samfelldir listar• Biðraðir oftast geymdar sem Hringbiðraðir
(circular queue)– Geymt í samfelldu svæði þar sem fyrsta stakið
kemur á eftir aftasta stakinu– Kemur í veg fyrir að biðröð skríði út úr
minnissvæðinu sem henni hefur verið úthlutað
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-25
Mynd 8.12 Stafli í minni
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-26
Mynd 8.13 Útfærsla biðraðar með haus- og halabendum
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-27
Geymsla á tvíundartré
• Tengd gagnagrind– Hver hnútur = gagnasvæði + tveir bendar á börn– Aðgangur í gegnum bendi á rótarhnút
• Varpað í samfellt fylki– A[1] = rótarhnútur– A[2],A[3] = börn A[1]– A[4],A[5],A[6],A[7] = börn A[2] og A[3]– …
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-28
Mynd 8.14 Uppbygging hnútar ítvíundartré
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-29
Mynd 8.15 Huglægt- og raunskipulag tvíundartrés sem geymt er með tengdu skipulagi
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-30
Mynd 8.16 Tré sem geymt er án benda
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-31
Mynd 8.17 Strjált tré í ójafnvægi sýnt á huglægu formi og eins það myndi vera geymt án benda
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-32
Notkun gagnagrinda
• Gagnagrind ætti aðeins að nota í gegnum fyrirfram-skilgreind stef– Dæmi: Stafli þarf að minnsta kosti stefin push og pop
– Gagnagrindin ásamt þessum stefjum myndar heilsteypt huglægt verkfæri
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-33
Mynd 8.18 Stef til að prenta tengdan lista
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-34
Notkunardæmi
Verkefni: Smíða huglægt verkfæri sem samanstendur af lista af nöfnum ásamt aðgerðum til að leita, prenta og setja inn.
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-35
Mynd 8.19 Stafirnir A til M íröðuðu tré
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-36
Mynd 8.20 Tvíundarleit eins og hún væri ef listinn væri útfærður sem tengt tvíundartré
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-37
Mynd 8.21 Stefið í Mynd 8.20 skoðar sífellt smærri tré þegar það leitar að bókstafnum J
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-38
Mynd 8.22 Prentun á leitartré ístafrófsröð
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-39
Mynd 8.23 Stef til að prenta gögnin í tvíundartré
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-40
Mynd 8.24 Innsetning staksins M innílistann B, E, G, H, J, K, N, P, sem er geymdur sem tré
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-41
Mynd 8.25 Stef til að setja nýtt stak inní lista sem er geymdur sem tvíundartré
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-42
Notenda-skilgreint gagnatag
• Mót fyrir sundurleita grind• Dæmi:define type EmployeeType to be
{char Name[25];int Age;real SkillRating;}
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-43
Huglægt gagnatag (abstract datatype)
• Notenda-skilgreint gagnatag með aðferðum fyrir aðgang og notkun
• Dæmi:define type StackType to be{int StackEntries[20];int StackPointer = 0;procedure push(value)
{StackEntries[StackPointer] ← value;StackPointer ¬ StackPointer + 1;
}procedure pop . . .
}
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-44
Klasi (class)
• Huglægt gagnatag með viðbótum– Eiginleikar geta erfst– Hægt að hjúpa innihald– Smiðir til að upphafsstilla nýja hluti
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-45
Mynd 8.26 Stafli af heiltölum útfærður í Java og C#
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-46
Bendar í vélarmáli
• Gildisvistfang (immediate addressing): skipunin inniheldur gögnin sem á að nota
• Bein tilvísun (direct addressing): skipun inniheldur vistfang gagnanna sem á að nota
• Óbein tilvísun (indirect addressing): skipun inniheldur staðsetningu vistfangs gagnanna sem á að nota
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-47
Mynd 8.27 Fyrsta tilraun til að útvíkka vélarmálið í Viðauka C til að nota benda
-
© 2007 Pearson Addison-Wesley. All rights reserved 8-48
Mynd 8.28 Hleðsla á gisti úr minnishólfi sem vísað er í með bendi sem er í gisti