版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,1,Uvod v ra?unalni?tvo - I,2001/2002Andrej Brodnik,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,2,Rekurzivne podatkovne strukture,Kak?na je rekurzivna funkcij
2、a?Tak?na, ki za izra?un uporablja samo sebe.Iz katerih delov sestoji rekurzivna funkcija?Iz ustavitvenega pogoja ter iz dela deli in vladaj.Podobno pri rekurzivnih podatkovnih strukturahstruktura uporablja sebe za h
3、ranjenje dela podatkov.,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,3,Seznam kot RPS,Seznam je lahko: prazen ali neprazen?e je seznam neprazen sestoji iz: glave in podseznama (slednji je lahko prazen)Primer:1
4、 2 3 4 5,,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,4,Seznam celih ?tevil,Operacije nad seznamom:tvorjenje in uni?evanjedodajanje na za?etku ali na koncuodvzemanje na za?etku ali na koncupoizvedovanje po p
5、rvem elementu (glavi) in preostanku seznama (rep)poizvedovanje o dol?ini in elementu v seznamu,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,5,Seznam v Javi,Poseben seznam je prazen seznam nullRazred nepraznih s
6、eznamov celih ?tevil:public class list { private int myHead= 0; private list myTail= null; …} // list,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,6,Tvorjenje,public list(int elt, list lst) { thi
7、s(elt, lst); } // list public list(int elt) { this(elt, null); } // list,tvorjenje in uni?evanjedodajanje na za?etku ali na koncuodvzemanje na za?etku ali na koncupoizvedovanje po prvem elementu (glavi) in p
8、reostanku seznama (rep)poizvedovanje o dol?ini in elementu v seznamu,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,7,Dodajanje na za?etku ali na koncu,public list prepend(int elt) { list newList= new list(elt,
9、this); return newList;} // prependpublic list append(int elt) { if (myTail == null) myTail= new list(elt); else myTail= myTail.append(elt); return this;} // append,dodajanje na za?etku ali na koncuodvzemanje
10、na za?etku ali na koncupoizvedovanje po prvem elementu (glavi) in preostanku seznama (rep)poizvedovanje o dol?ini in elementu v seznamu,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,8,Poizvedovanja: glava, rep,
11、dol?ina, ...,public int head(void) { return myHead; }public list tail(void) { return myTail; }public int length(void) { if (myTail == null) return 1; else return (1 + myTail.length());} // length,odvzemanje na z
12、a?etku ali na koncupoizvedovanje po prvem elementu (glavi) in preostanku seznama (rep)poizvedovanje o dol?ini in elementu v seznamu,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,9,Poizvedovanja: ... vsebina,publ
13、ic boolean search(int elt) { if (myHead == elt) return true; else if (myTail == null) return false; else return myTail.search(elt);} // search,odvzemanje na za?etku ali na koncupoizvedovanje o dol?ini in el
14、ementu v seznamu,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,10,Odvzemanje na za?etku ali na koncu,public list delFirst(void) { return myTail;} // delFirstpublic list delLast (void) { if (myTail == null)
15、 return null; else { myTail= myTail.delLast(); return this; }} // delLast,odvzemanje na za?etku ali na koncu,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,11,Neprazni seznami,Razred list vsebuje sezna
16、me, ki niso prazniObstaja posebna konstanta null, ki predstavlja prazen seznamRaz?irimo razred list tako, da bodo seznami v njem poleg lastnosti nepraznih seznamov ?e:bili lahko prazniimeli ime, ki ga dobijo ob tvorj
17、enju ali ga spremenili kasnejebomo poizvedovali ali so seznami prazni in po imenu,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,12,Razred eltList,public class eltList {/* ----------------------------------------
18、-----[ data ]--- */ private list myList= null; private String myName; /* ostalo za (malo) domaco nalogo *//* --------------------------------[ create / destruct ]--- */ public eltList(String name) { this(null, n
19、ame); }; public eltList(String name, int elt) { myFirst= new list(elt); myName= name; } // eltList,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,13,Razred eltList,/* -----------------------------------
20、--------[ update ]--- */public void prepend(int element) { if (myFirst == null) myFirst= new list(elt); else myFirst= myFirst.prepend(elt);} // prepend/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
21、/public void delLast(void) { if (myFirst == null) return; myFirst= myFirst.delLast();} // delLast… /* ostalo za (malo) domaco nalogo */ …,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,14,Dvojno rekurzivni s
22、eznam,Rekurzivno dvojni seznam je, kot obi?ajni seznam lahko: prazen ali neprazen?e je seznam neprazen sestoji iz: glave in dveh podseznamov (vsak od slednjih je lahko prazen),Predavanje: 8,UR-I 2003/04© Andrej Br
23、odnik, UP,15,Dvojno rekurzivni seznam,2,7,6,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,16,Dvojno rekurzivni seznam,Dvojno rekurzivni seznam imenujemo dvojno (binarno) drevoGlavo pri drevesu imenujemo koren in
24、podseznama levo poddrevo ter desno poddrevoObstajajo seveda tudi k-terno rekurzivni seznami, ki jih podobno imenujemo k-i?ka drevesata drevesa imajo (do) k poddrevesin (do) k-1 elemetov v korenu,Predavanje: 8,UR-I 200
25、3/04© Andrej Brodnik, UP,17,Primer dvojnega drevesa,Posebno drevo je prazno drevo nullRazred nepraznih dreves celih ?tevil:public class tree { private int root= 0; private tree left= null; private tree
26、right= null; …} // tree,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,18,Tvorjenje,public tree(int elt, tree newLeft, tree newRight) { this(elt, newLeft, newRight); } // tree public tree(
27、int elt) { this(elt, null, null); } // tree,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,19,Dodajanje,Dodajanje na za?etku (vrhu / korenu) public tree prepend(int elt) { tree newTree= new tree(elt, th
28、is, null); return newTree; } // prependali na koncu (pri listih)public tree append(int elt) { if (right == null) right= new tree(elt); else right= right.append(elt); return this;} // append,P
29、redavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,20,Poizvedovanja,Poizvedovanja: koren, poddrevo public int value(void) { return root; } public list leftSubtree(void) { return left; } public list righ
30、tSubtree(void) { return right; }Poizvedovanja: vi?ina public int height(void) { int leftHeight; int rightHeight; if (left == null) leftHeight= 0; else leftHeight= left.height(); if (
31、right == null) rightHeight= 0; else rightHeight= right.height(); return (1 + max(leftHeight, rightHeight)); } // height,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,21,Poizvedovanja,Poizve
32、dovanja: vsebinapublic boolean search(int elt) { boolean found; if (root == elt) return true; if (left == null) found= false; else found= left.search(elt); if ( !found ) if (right !=
33、 null) found= right.search(elt); return found;} // search,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,22,Obhodi in izpisi,Prvi (preorder)public void preorder(void) { system.io.println(me); // PRE - pred
34、 if (left != null) left.preorder(); if (myRight != null) right.preorder();} // preorderVmesni (inorder)public void inorder(void) { if (left != null) left.inorder(); system.io.println(me); // IN -
35、 vmes if (right != null) right.inorder();} // inorderZadnji (postorder) - (mala) doma?a naloga,Predavanje: 8,UR-I 2003/04© Andrej Brodnik, UP,23,Zaklju?ek,Ogledali smo si:Rekurzivne podatkovne strukture:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- uvod v zavarovalni tvo
- v.i._arnold_論數(shù)學教育
- 2.i u v y w(說課稿)
- 2.i u v y w(教案)
- 2.i u v y w(說課稿)
- 2.i u v y w(導學案)
- 2.i u v y w(片段賞析)
- Testpoint平臺的I-V、L-V性綜合測試系統(tǒng).pdf
- The_I2C-bus_specification(V2.1).pdf
- 超薄HfO2柵MOS結(jié)構(gòu)C-V和I-V模擬.pdf
- ra健康教育
- 光伏陣列i-v特性分析測試儀
- RA3.dwg
- RA1.dwg
- RA1.dwg
- RA1.dwg
- RA1.dwg
- RA2.dwg
- RA2.dwg
- RA3.dwg
評論
0/150
提交評論