java數(shù)據(jù)結(jié)構(gòu)_第1頁(yè)
java數(shù)據(jù)結(jié)構(gòu)_第2頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第一章:緒論1、計(jì)ri機(jī)科技的w大支w:i、數(shù)據(jù)結(jié)構(gòu)2、_ -程序=數(shù)裾結(jié)構(gòu)+燈法2、數(shù)據(jù)結(jié)構(gòu)定義是一N研究非數(shù)仿計(jì)兌的程序設(shè)計(jì)問(wèn)題屮計(jì)兌機(jī)的揀作對(duì)象以及它們之間的關(guān)系和操作等等的學(xué)科。玫據(jù)Da:足對(duì)位息的-種符弓農(nóng)示。在計(jì)57機(jī)科學(xué)屮足衍所釘能輸入到il W機(jī)中并波計(jì)算機(jī)稅序處理的符3的總稱。數(shù)據(jù)元素(I)ata Element)足數(shù)裾的堪本中.位.A計(jì)算機(jī)程序屮通常作為一個(gè)體 進(jìn)行考慮和處理。個(gè)數(shù)掂兒索"門(mén)II若十個(gè)數(shù)掂項(xiàng)組成。數(shù)槲項(xiàng)足數(shù)則的4、"J分別的圮小中 數(shù)據(jù)結(jié)構(gòu)(Data Structure):足相h:之間介/H 種成多種特定關(guān)系的數(shù)樅元索的集 合。3. 數(shù)椐

2、結(jié)構(gòu)主®衍邏糾結(jié)構(gòu)和物理結(jié)鉤數(shù)鋸之間的相互關(guān)系稱為邏拊結(jié)構(gòu)。通常分為叫類堆本結(jié)構(gòu):集合 結(jié)構(gòu)屮的數(shù)裾元敘除ruw r種類#外.別尤其它關(guān)系。 線性結(jié)構(gòu)結(jié)構(gòu)中的數(shù)裾元秦之間存在一對(duì)一的關(guān)系。樹(shù)型結(jié)構(gòu)結(jié)構(gòu)中的數(shù)據(jù)元東之m存作一對(duì)多的關(guān)系。圖狀結(jié)構(gòu)或網(wǎng)狀結(jié)構(gòu) 結(jié)構(gòu)中的數(shù)裾元素之叫介7|:多對(duì)多的關(guān)系。4. 數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)中有兩種不M的表示方法:順序存儲(chǔ)結(jié)構(gòu):川數(shù)拋元索在存fi/i器屮的相對(duì)位腎來(lái)衣¥數(shù)裾元索之N的邏輯關(guān) 系。鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu):在毎一個(gè)數(shù)據(jù)元素中増加一個(gè)存放地址的指針,用此桁針?biāo)伪硎?數(shù)據(jù)元索之間的邏樹(shù)關(guān)系。5、數(shù)據(jù)對(duì)象:坫種數(shù)掘類咿元蒺的集介。例:枘數(shù)的數(shù)據(jù)對(duì)象是&

3、quot;-3, -2, -1, 0. 1,2, 3, 英文符類制的數(shù)據(jù)對(duì)象B, C. D. E, F.) 敵據(jù)類型:在一種祝印設(shè)計(jì)講言中,變量所具有的數(shù)據(jù)種類。6.數(shù)椐結(jié)構(gòu)的三個(gè)方而:7、算法用杣象的W肖描述解決特定問(wèn)題的辯一步的俠作。程序足il ff機(jī)能ffl解和執(zhí)行的桁令序列。一個(gè)構(gòu)序丈現(xiàn)一個(gè)m去。«法和構(gòu)序的ix:別是訂法的執(zhí)行是存窮的,而程序的執(zhí)行吋以是無(wú)限的.8、時(shí)間復(fù)雜度:時(shí)間復(fù)雜度為o< n2)的二重循環(huán)。 ini n=9;for(int i=o;i<cd+)foiXint j=0;j<oj+) SxstexxhOirt4MinW*j);int n=

4、9; toittnt i=O;i<cui+) fortini j=O;j<Uj+>,時(shí)間復(fù)雜度仍為SysteiruQMt4wi_*j); 二重循環(huán)的執(zhí)行次數(shù)為 0(/。n(n +1)2-4.時(shí)間復(fù)雜度為O<nlog2n)的二盧循環(huán)。 int n=8; forttnt i=i;i<=cu*=2) foitint j=1 ;j<=cuj+)Sys texxLQuLpcinUi *j);循環(huán)次數(shù)為時(shí)間復(fù)條度為O<nlog2冰V n - O (n log 2 n)«.時(shí)間復(fù)雜度Wa)的二重?fù)?jù)環(huán) int n=8; torlint i=l;K=rKiA=

5、2) forUnl j=1 ;j<=i;j+) System. outprint(i*j):總的循環(huán)次數(shù)為fe時(shí)間g雜度為91、什么是集合通i怡況卜 riwi+iiiNj性質(zhì)的一類東內(nèi),聚成一個(gè)幣體,就吋以稱為集合。 比如,用Java編稅的所冇程序員,全體屮M人等。2、什么是集合框架集合桐架是為表示和操作集介而規(guī)定的一種統(tǒng)一的標(biāo)準(zhǔn)的體系結(jié)構(gòu)。任何集介 框架都包介三大塊內(nèi)容:對(duì)外的接U、接U的實(shí)現(xiàn)和對(duì)集合運(yùn)算的兌法。3、集合框架對(duì)我們編程有何助益:它減少了稈廳S計(jì)的卒窮、它提W FR庁逨 度和質(zhì)莆。10、CoUechon接口是一允許承i(的對(duì)象。組成對(duì)的鍵一值對(duì)象,Set接繼承Collec

6、uoii.但不允許重復(fù),使用H己內(nèi)部的一個(gè)排列機(jī)制。 List接LI繼承Collecuoii,允許艱仏 以元農(nóng);插的次W來(lái)放?元系,不會(huì)朮新 排列.即所持Yi的是key-value pairs <. Map中不能打的kevo擁fn'i己的內(nèi)部作列機(jī)制。矜器屮的冗系炎職都為Object。從界器収以元農(nóng)時(shí),必油把它轉(zhuǎn)換成盼來(lái)的炎型.第四韋:遞歸1、遞|門(mén)的定義 矜一個(gè)對(duì)象部分地包介它FILL,成用它fl l!給I'ld定義,則稱 這個(gè)對(duì)象是遞Di的:打一個(gè)過(guò)稈fi:接地成m技地調(diào)mrid,則稱這個(gè)過(guò)is是遞 歸的過(guò)程。第五章:數(shù)組列表1、線性衣是由n (nO)個(gè)相同類型的數(shù)據(jù)

7、元素al,a2t . an組成的有限序列, 記作:LineaiList=al,a2,., an艽中,表示線性表的元索個(gè)數(shù),稱為線性農(nóng)的長(zhǎng)度。2、線性表的順序存儲(chǔ)結(jié)構(gòu):足用一飢連續(xù)的/f儲(chǔ)單元岣呼介:放線件農(nóng)的數(shù)W元 索,數(shù)樅元索A內(nèi)介的物理介儲(chǔ)次序勾它們?cè)诰€性農(nóng)屮的邏料次序是一致的, 即數(shù)據(jù)元素m勺jl;前驅(qū)數(shù)據(jù)元粲1及后繼數(shù)據(jù)元紊ai+l的位苻相鄰。5、為什么需要串行化:希鉛AmiyList對(duì)象保存到文件中,以便于恢G使用。6、如何實(shí)現(xiàn)類可串行化:見(jiàn)練習(xí) packav Java.io;public interface Serializable /標(biāo)記接口7、_是允許以一致的方式對(duì)集合對(duì)象的元

8、系進(jìn)行汸14的對(duì)象。迭代器對(duì)象一W發(fā)現(xiàn)另一個(gè)對(duì)象在結(jié)構(gòu)上修改這-集介,就Hr上么報(bào)錯(cuò)。這是因 為一口.你開(kāi)始對(duì)一個(gè)ArrayLisr對(duì)象進(jìn)行迭代,就小能冉修改這個(gè)AirayList完 糧性。W此彈出 CoiicuiientModificatioiiExcepdoii1.亨W CoUecuon技I I含義及乃法 Collection 接 口Collection總穿次銘構(gòu)中的根摶U。Collection表示一組對(duì)象, 這些對(duì)象也稱為collection的兀尜。JDK小提供此接口的任M 直接束現(xiàn):它提供具體的子接門(mén)(如Set和List)丈現(xiàn)。 Collection 方法: paclugejmitil

9、 public imerface Colleedon mt sizeO;送0此 coBeedon 中的元去ft- boolean Lsf mptyOj如吳此 collsticn 不念元IL 11 返9 true. booleflDContamsCObjecto);? 4dS此eoDtioc包含播定的元X賈使E true. Iterator iieratort)riSB在此calkctioii 的無(wú)進(jìn)行斟t的送代篇. ObjoctQ ioArra>(X返回色含此eolkrtian中所有元親的番軋 Object0 i&lrra>fObject aD);1)逆H色含此coBtcd

10、on 中帝有元紊的教也. boolein >dd(Ob>ct oX WfitttcoIkaiDo Mffi定的元史 C 可MWH . >001視0快:0扣0>從此collcdon中移»抱定元董的單個(gè)實(shí)« SD榘存棚 話(可選灌作). bookan contaixuMllCoIlectioii ckvloMft cfiUtoioa 含櫓定 coUectwn 中的所有元ft. W返回 <就lionc);轉(zhuǎn)嫩史 coUecbon 中的所_元童4V滅to費(fèi)此 coDection 巾 MeanjenwrlCoIkcoonc):移詠Jt eollmion

11、中押曲電包含在措史collection 中 oolt)-m.ll(CnIlrrtionc)y * 僅保此coIlectioKi 中,4£也任含在投定>1111100 的 void dearQ 此collectkm 申的(蚵選 1作 boolean aquOfajoet of 比快此 eoILrtian 與衛(wèi)走對(duì)象相豕 ini buhCcdeOi 返S此 coUartwo 的份粉HS-2. VW Collection I »j List tfcl I的關(guān)系見(jiàn)練>本1 VW ArrayList »j數(shù)泔之fuj的關(guān)ArravList Xj數(shù)組進(jìn)tfTJII

12、 序,蚍續(xù)UJ 本4 從川戶角度如何理解ArravLLSt i從開(kāi)發(fā)7i flj度如何理W ArravList ? AixavList比數(shù)組多/一叫増減數(shù)據(jù)的方法o5 VWAnayList常用力法的介義及使用賺.見(jiàn)I5P1216 會(huì)實(shí)現(xiàn) ArrayList 的關(guān)卬介fifi簡(jiǎn)化版.tiWJtx常川的力從 size); LsEinpryij; contains(Objectoj ; index0f(Object clem) ; add(Object o): removeObject o) ; clears); ger (mt mdex);set (mt index. Object element

13、)< 1) public mt sizeQ return size, (2) public boolean isEmptyv)if(size=Ojreturn uue,return false.< 3) public Boolean contains;Object o) return mdexOfopO, )(4> publicintLndexOf(Object elein) if (elem null) for (mt i = 0, l < size, i+) if ( el ement Dateinull) return i.for (mt l 0, l <

14、size; i+) if(elem equals elemenrDateL) return i.retuni-1.(5) public booLeanadd(Object o)ensureCapaatsize+1)» elementDatesize+J«o,return true.(6) public Object remove(int mdex) if(iQdex<O|iadex>=size)return null.Object temp-elementDateind ex. fonjut pindex,j<aze,j+) elemenrDatej-el

15、enientDatej+1 】,size-,return temp.(7) public void clcar()modCount+>fortmt i=0j<size,i+4jd emcntData l=du11, size 0,(8) public Object getmtindcx)邊 liid ex< 0| |ind ex>-az e j return null,return eLemeutDateind ex,(9)7現(xiàn)解done方法的貪義.并淺克降度克降迸行說(shuō)叫及陽(yáng)示 為什么需要克?。?艦決得一個(gè)副木,即另一份拷W。 如何實(shí)現(xiàn)類可克隆 package java

16、.lang; public interface Cloneable /標(biāo)記接口 Eg public Object cloneQ ArravList v = (AiravList)super.c 1 one0, / copies sizev.elenieiitData = new Object【size,Svsteni.arraycopy(elen)eiitDa(a< 0, v.elenientData.O, size), v.modCouut = 0,return v; )catch (CloneNotSuppouedExceplion e) / tins shouldift happe

17、n, since we aie Cloneable throw new lnteinalEnorO.)myListlmvList3常 WJSIIKona,Kihei1. 教w上的習(xí)題、上機(jī)題、常川兒個(gè)方法的吋問(wèn)鉍雜度4. 曲讀程序,寫(xiě)出運(yùn)行結(jié)果AmyList lefnew ArravLisr,Let addcpj,kt.add(0, Vj,let addC),System out.pimtLmlet.iudexOWJ),let remove 1System. out.pnntin(let get 1),Svstein out.pLintln(let coataiumJ,5. AnayList屮

18、定義丫、個(gè)方法,說(shuō)明該方法在炎屮正確的方法名稱 public Int unkown(ObJect elem) if (ekm = null) for (int i = 0; 1 < size; i+) if (cleniciitDalai|=nulb return i;I else ror (int i = 0; i < size; i+) if (elem.eqiials(elementDatai) return i; return -I;6. 假ArrayList屮添加如卜方法.W出埒個(gè)方法的力法體 public boolean addFirst (Object elemenr

19、 ipublic boolean addLast (Object element)public Object removeFirst()public Object removeLast() public Object getFirst () public Object getLast、)第六章:鏈表 一、貶求1. 對(duì)象變對(duì)象丈體關(guān)系.m示說(shuō)明的甲變w勺糾象變w:的I*:別2. 以個(gè)鏈農(nóng)為介實(shí)現(xiàn)Linked List的陽(yáng)匕版.包常用的Zj'iA size(): isEmpcyu: contamsObject o); indexOf(Object elemj : add(Object o)

20、; removeObjct o) :ger tint index; ; set (mt index. Object elemenrj: get (int index); getFirstjgetLasrv removeFu:st() jmoveLastiJ A.5pubLic class MyLinkedList Entry header, mr SLze,public MyLinkedList ()head mew Entnnulljiull), SLze-O; public int size(j return size, public boolean isEmpty() l£(s

21、lzc0) return true, elseretum false, .public boolean add(Object o) Entry q-new Entnojiull), Entry p=head er, whde<p next=nulljp-p n«t,p.next-q, SLZC+, return true, public void add(mt indcx.Object elemcat)/*if(Lndex<O|iDdex>size)throw Ind exOutOfBouik sExccpa on(+slzc)/ Entry q-new Entry

22、elementiull), Entry p-hcader.forint l 雪 04<mdex4+)p=p next,6 6q next麵 p next, p.nexr-q,SLZC+, public boolean containObject dem)Enuy p-headernext, xvhdetp,=oull)if(p. el ement. equa I s( elem) return true,ppnext,return false, /public Object get(mr index八if(ind ex<0|ind ex>-sze)Entrv q-header

23、. foi|mt i-04<Lndex4+) q-q.next,return q,public Object reniovemt index) if(ind ex< 0| |ind ex>-az e) return null. Entry q=header, foimr j=indexj<size1j+)q-q next.q.next-q.next ne?ct. size-, return q, /public int mdexOf(Object d«n, if (dem null) for(int l - 0. l < size, i+) if (el

24、ementDatefinull) return l, else for(int l 0, l < size> i+) if (elem equals(elemenrDatei) return i, return -1,3. 寧握滬環(huán)a衣定義并以甲.環(huán)鏈衣的形式丈現(xiàn)上題:見(jiàn)練習(xí)4. 掌擁奴端鏈衣定義并以雙瑞鏈農(nóng)的形式實(shí)現(xiàn)上題:見(jiàn)練)J5. 笮握雙向鏈衣、嘆叫晰壞鋌衣概念及定義:公_出叫貼壞61衣的仙入、刪除閽小以及 會(huì)書(shū)寫(xiě)部分代碼:見(jiàn)卜6. 從用P炻度如何押解LmkedUst?從汗發(fā)芥«/£如何押解LinkedList?7 VM. LinkedList常川/認(rèn)的介

25、義及使川脈:地書(shū)FU50S如何胛解鏈A:/儲(chǔ)結(jié)構(gòu)屮設(shè):吶兵(鍋點(diǎn)的方式7/79 如何川LLukedList 屮 header &據(jù)hkM哨兵問(wèn)Jprivute transient Entry header = new Enlry(nulL null); private transient int size 0;11.悶述 LinkedLLSt *j AixayList 發(fā)別如果何用程序?qū)鋫€(gè)尜引位宵的元索進(jìn)打人黽存収/刪除操作.An-avList對(duì)象耍遠(yuǎn)遠(yuǎn)優(yōu) J . Linked List 對(duì)象.如川W序t®對(duì)列表進(jìn)行循環(huán),并幾在循壞的時(shí)候進(jìn)行插入成荇刪除操作, LmkedL

26、ist對(duì)象攰遠(yuǎn)遠(yuǎn)優(yōu)J; ArravList對(duì)象.12你足如何押解迭代器丁作?平揮迭代器的忮用/法:w卜1. 單鏈表的特點(diǎn):修個(gè)元索(農(nóng)項(xiàng))由結(jié)點(diǎn)(AWr)鉤成: 線性結(jié)構(gòu)header lol "HilAl點(diǎn)nf以個(gè)連純介儲(chǔ)表可擴(kuò)充。Z插入結(jié)點(diǎn)笫一種情況:在笫一個(gè)結(jié)點(diǎn)前插入public void addFirst(Objcct o) / make new EntryEntry newEnlry new Entry(o. null); ncwEnti y.next = licadei.next, header .next = new Entry; size十十:newEntrl |new

27、Entrheader | 1 二 |header(插入前)(插入后)/第二種情況:在鏈表中間插入newEntry. next =current.next = newEntiy ;new KnlcurrentLU-new Kn值current(插入后(插入前),第三種情況:在鏈表末尾插入 newEntry.next = current.next; urrent,next = newEntry;newEnt | |curren 貧n ewEntrv DOi(插入前)(插入后)3. 刪除結(jié)點(diǎn)(1) public Object removeFirst()/ (assumes list not empt

28、y) Object first= header.nexLelement; header.next = hcader.next.next; size; return first; )(2) public Object removeLast()(Entry pre = header; Entry current=pre.next; whilef current .next != null) pre= current; current = current<next; ) prc.next=null; size; return current.element; I4、遍歷為了顯示鏈農(nóng),從head

29、er開(kāi)始,沿著引川鏈從一個(gè)鏈結(jié)點(diǎn)到卜一個(gè)鏈結(jié)點(diǎn)。 變!|I cuiienc按順#桁向符一個(gè)陸結(jié)點(diǎn)。Curieut ft宂桁向header,那坍存第-個(gè) 鏈節(jié)點(diǎn)的引用。public void displayList() System.out>print(,fList (header->last):"); Entry current = headennext;/ start at beginning of listv hile(current != null)/ until end of list.current.(lisplnyEiitry();/ print datacu

30、rrent = current.next; / move to next EntrySystem, out. printin5、査找*public int indexOflObject o) ini index = 0;for (Entry e = headennext; e != null; e = e.next) if (o.eq uals( e.elemen t) return index; index+; return -1; I public boolean containObject o) return indexOf(o) != -1; I6、獲取(1) public Objec

31、t getFirstO if (size= =0)throw new NoSuchElementException();return header>next«element; I(2) public Object get (int index)(if (index < 0 II index >= size) throw new IndexOutOfBoiindsExceptioiM"Index: M+index+ ”,Size: M+size); Entry e = header.next; for (int i = 0; i < index; i+

32、) e = e*next; return e.elcnicnt; (3) public Object getLast() 7、雙端鏈表X乂端鏈表與傳統(tǒng)的鏈表非常相似,似是它有一個(gè)新特性:對(duì)砧后一個(gè)鏈結(jié) 點(diǎn)的引用,就像對(duì)第一個(gè)鏈結(jié)點(diǎn)的引用一樣。迭代器Iterator 接口 package ja'D iitil, public interface Iterator boolean liasNext(), Object nexty, void lemoveO, ) List Iterator 接口 package ja'D.util, public interface Listlte

33、rator extends Iterator boolean liasNextQ, Object nextQ; void lemoveO; boolean liasPieviousQ, Object previousQ. int iiex(Index()5 int previouslnde void set(Object o), void add (Object o); )二、常蚍題H1. 教M上的習(xí)題2. 上機(jī)題3. 常用幾個(gè)方讓的時(shí)叫0雜度4. 閱讀程序,寫(xiě)出運(yùn)行結(jié)果Linked List let-new LmkedListO, let adWJ, let add(0, V”, ktadd

34、(“e”),System out.pnndn(lct. ind exOf( p” j let removal), System. out.pimtln(let.get(l). System out.ptmthxlet. containsC1), Svstcm out.pLintln(let. getFu:st(),5. LmkedList屮定義/一個(gè)/法,說(shuō)叫改/法在炎屮正碗的/i丄名稱 public me unko n(Object o)int index o,for (Entry e - header next, c = null, e 畫(huà) e.uext) if (o equal s(e.

35、 el emem) return index, lndex-H-. return -1; 1. LinkedList屮定義了一個(gè)方法.說(shuō)明該方認(rèn)在類屮止峋的捕、V、稱 public Object unkowixjnt index) if (index < 0 | index >= size) hrow new Ind exOutOfBound sExcepnon( Ind ex ,+index+, Size +size Entry* c - header next.for (mt l 0, i < index,i+) e-cnext.letuine element,10/11

36、第七章隊(duì)列和棧一、要求1. 莩握隊(duì)列、找的堪本槪念:見(jiàn)F2. 利川申鏈表實(shí)現(xiàn)找(一般不S盔哨兵,中.鏈表的頭火棧頂)3. 利用數(shù)組實(shí)現(xiàn)棧(棧底為。1)4 簞択利用ArravList、LinkedList實(shí)現(xiàn)找5. 牮握利用雙端-衣實(shí)現(xiàn)隊(duì)列6. 常択利用ArravList、LinkedList實(shí)現(xiàn)隊(duì)列7. 以Queue或SKick為例.W述繼承介成的使用方認(rèn)s.窄W棧、隊(duì)列所科萬(wàn)法的含義及使用1、隊(duì)列是元素的序列,在隊(duì)列中:(1) 只能在隊(duì)列尾進(jìn)行插入;(2) 只能/I:隊(duì)列頭迸行刪除、獲取和修改. 特點(diǎn):先進(jìn)先出:2、棧(stack)棧的定義和特點(diǎn)定義:限定儀作衣尾進(jìn)行插入成刪除操作的線件衣,

37、表尾一找頂,衣尖一棧底, (允許插入和刪除的一端稱為棧頂(top),K一端稱為棧底(bonom):不介元素的空衣稱空棧:特點(diǎn):先進(jìn)后出(HLO)或后進(jìn)先出(LIFO);3、堆棧足一個(gè)元茗#列。堆找中唯一能被刪除、I方問(wèn)成修改的元躬足記近插 入的元袞。這個(gè)元素就是位T堆棧頂部的那個(gè)元素。TOP -敁近捕入的數(shù)據(jù)元索PUSH -入棧,在找頂插入一個(gè)數(shù)槲元索POP -出棧,刪除棧頂?shù)臄?shù)你元素4、下面操作輸入的結(jié)果是多少:Stack inyStack = new Stackf ); for (int i = 0; i < 10; i+)niyStack.push (new Integer (i

38、* i); while (ImyStack.isEmpty()gui.println (myStack.pop();結(jié)果是:0、1、4、9、16、25、36、49、68、81二、 常 WSiH1. 教W上的題、上H 常川兒個(gè)方法的時(shí)叫«雜度4. y出卜列W序段的輸出結(jié)果public static void main(Scnng args )fl/£T聲誑凹蟲(chóng)柚3明樹(shù)X二WWWXW2SW-E互 '明神士球曲士莩¥ 教雎好解組不啤穿鈞+_»#迪;5¥接 事_« 等_曲綠+明穿W眘擗茇二新一求S樹(shù)寨®每財(cái)X二:宴V蚩 Vp

39、>qsnd s V)dod i=p) (Xudtugsrx.bpq.u c(p啡nd 丄(»)siunbj pi'yi Mod s=p “<jdrassrspqM "ppafqo V)?oas au = ipns (a x>fqo'S jpasV。卽 piOA羽收明7?總叩.4】即”年職:S/ 7 xkrpmjdano wiasASVAlnidino TnajsXsVa) ononj)ap f) (Uiduigsi*J)t >pqa aqu) onan&ro b c(x) anantppt) 7x) Qnin&TO &

40、amp; 7x)0%(人加puirqo aqu)J)0jujocjcq3 auu)&aou) annxpYhaDuiuio in -a %t5l»K>Tnrq;3 iun-x npiircqo (brwnO .uou-0 arunj) ( sjc Pui.ns>tncui pioa onms onqnd1辟屮哄MSAMfhH K7 x)upuudmo tusjsas 7Atoidino tus.<s4(Aldod s (XvidingsT s; bpqav '(A) wioavqo.iwu)qsnds IodS c(x)qsnd s c( <4

41、C)wioujvqj .uQU)qsnd s VViods Aqsnds Y(crc)naioEicqo Ai3U)qsnd s cfx)qsnd s c (c5|c) wiotnrqo.(co<) wpcjcqo auu 'A*x waocjvqo YOI tepas .似u S spas2. 熟悉出二乂W的5個(gè)性質(zhì):兇卜3亨握二叉樹(shù)的叫種遍歷方法:先根.中根.后極.寬度優(yōu)先遍歷4窄W二乂搜索W的慨念?5. VW二叉樹(shù)使用鏈?zhǔn)酱鎃結(jié)構(gòu)吋結(jié)點(diǎn)描述及二叉樹(shù)的描述(定義用數(shù)組存儲(chǔ)完全二叉樹(shù)是非常有效的。 完全二叉樹(shù)能用ArrayList存儲(chǔ)么?可以,其效率等同于用數(shù)組來(lái)存儲(chǔ).如果用L

42、inkedList存譴呢? 不是一個(gè)很好的選擇。對(duì)于無(wú)序的數(shù)組,ArrayList,或者LinkedList集 合插入、査找或者刪b的時(shí)間復(fù)雜度是的線6. 帑擁二義搜/few的捕入九糸m #能夠依據(jù)該訂法t成一腳j二義搜索w,會(huì)川漢說(shuō)描 述刪除元素的算法?兄練習(xí)7. 教W屮B(niǎo)inSearchTrec類屮ft找某-個(gè)乂索的算法?S.完全二叉樹(shù)采H1順序介W紡構(gòu)實(shí)現(xiàn),試描述二叉W的定義及實(shí)現(xiàn)木方法? K樹(shù)的定義W是由n (n 0)個(gè)結(jié)點(diǎn)組成的有限集合。如果11=0.稱為空樹(shù):如果11 > 0.則1)冇一個(gè)特定的稱之為根(loot)的結(jié)點(diǎn),它只冇ft接后繼.但沒(méi)冇ft接前 驅(qū);2)除報(bào)以外的其

43、它結(jié)點(diǎn)劃分為m (iii>=0)個(gè)互+相交的有限集合T0, Tl,.,Tm-l,每個(gè)集介乂是一棵樹(shù),井且稱之為根的子樹(shù)。2、樹(shù)的特點(diǎn):毎棵子樹(shù)的報(bào)結(jié)僅打一個(gè)接前馭,但可以脊0個(gè)成多個(gè) ft接后繼。夂二叉樹(shù)的性質(zhì):1) 若二叉樹(shù)的層次從0開(kāi)始,則在二叉樹(shù)的第i層最多有2i個(gè)結(jié)點(diǎn)。(iO)2) 島度為h的二叉樹(shù)城多有2/+1-1個(gè)結(jié)點(diǎn)(/i之-】)3) 對(duì)任何一棵二叉樹(shù),如果其葉結(jié)點(diǎn)有0個(gè),度為2的非葉結(jié)點(diǎn)有n2個(gè), 則有:n0=n2+l若設(shè)二叉樹(shù)的髙度為b則共有/>+1層.冇n (n > 0)個(gè)結(jié)點(diǎn)的完個(gè)二叉樹(shù)的咼度為riog2(/rtl)1-1性如將一棵有個(gè)結(jié)點(diǎn)的完全二叉樹(shù)自

44、 頂向下,同一層自左向右連續(xù)給結(jié)點(diǎn)編號(hào)0,則有以下關(guān)系:若則f無(wú)雙親若/>0,則I的雙親為L(zhǎng)(/-iy2 若則/的左子女為2*1+1.若2*/+2 < w,則/的右子女為2巧+2 s若/為偶數(shù),且0. 則其左兄弟為hl,若5)/為奇數(shù),且門(mén)/1-1, 則其右兄弟為#+14、遍歷二叉樹(shù)(見(jiàn)書(shū)上)5、儲(chǔ)存結(jié)構(gòu)BinSeaichTiee炎+坫Java巣介框架的一部分.但是它實(shí)現(xiàn) Collection接LL實(shí)際上,BmSearchTree只實(shí)現(xiàn)Collection接口的輕微擴(kuò)充:Set接口。Set接口 繼承了 Collection接口,并且不允許冇®父的值。6、public bo

45、olean contains (Object o) Entiy temp = root, int coinp.(teiup.element);while (temp != null) comp = (CoinparableJo)xonipareTo if (comp = 0)return true, if (comp < 0) tenip = temp.left, elsetemp = temp, fight; )/ wiule return false, )/ comains7、averageTime("> 是 O(log n).二、 常見(jiàn)題El1. 教m上的題、上機(jī)題

46、、常用兒個(gè)方法的時(shí)問(wèn)«雜度2. 從一棵仝的二叉排序W開(kāi)始,將以卜關(guān)鍵碼俏依次插入:25.13,1531,7,20,37.沽相出插 入全部完成的二叉作序W.3. 給出卜列二叉數(shù)的先根、屮根.歷的結(jié)Z:序列。4 W的柚本槪念第十韋:TreeMap、TreeSct一 W要求1. 笮W映WNIap接【I及Jt的穴義?15/152 V握史介Set接U及其的含義?3比較Cdlecnon接I I及U Set接口的S別 Set對(duì)Coolecuon進(jìn)行了限制,限制f 的部分4. VW TieeMap數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),TieeMap »內(nèi)部結(jié)點(diǎn)的定義?5窄握Tredvfap類有常用萬(wàn)法含義及使用方

47、法6使川TreeMap炎屮返M鍵災(zāi)、鍵仇圯方法.熟悉這方法如何使川迭代器? package tteeinappack.import java util *,public class TestTreeMap public static void rmin(Stnng args) TreeMap rml-new TreeMap),/* Svstem. out pnntln( 'sEmptv-"+tml isEmpt)人/ tml:put( 20090101-ka”,tml put、”20090203”,wangwiT),/ System out.pnntlnC put-"

48、;+cml.pui( 20090203", wangwu"),*/ tml:put("20090102", zhangsm”),tml.put(M20090104e,huluM)>/System, out. pnntln(弘卜” +tml.get( 20090203u), System.out puntliK pur-* +unl put(M20090203* 1 wwangwu j). System.out.piindiK get-*+unl geawM20090203J),System, out pnntlxi( size= +0111512,

49、", System, out piintinisEmpty+tmlLsEmptyx),/*Itenitoc LtLunl keySetG.uernonj, w hile(itr. hasNext()System.out.pnnt(H M+itt.next(), System, out puntloo.Iterator a-mil valueaj.iterator, while(it.hasNext)System out.pnnt(n M+it.next<)> System. out.pLintlix), Iterator lte-tml enuySeH).Ltewtoc(

50、), uhile(itehasNext()System outpiinHH H+ite nexc),*/TreeNtap ttn2-nev TreeMap(),tm2.puttn20090305n, q<iqqqJ,tmZputAlltml),/Ireraror irr=tm2.keySenj.iteraronj,while(itr.hasNex)jSystem out.printsH H+itr.next(), System. outprindiK )>Iterator it=tm2 vaLuesjiteratocO, whileLt.hasNex)System out.pnnt

51、M ”+itnext0/, System, out.pnndix).Iterator ite=tm2 entrySettj iterator, 16/16whilc(Lte.hasNext()System outpnntf ”+irc/System out.pnndn( ,+tm2 remove(,20090305j). System.out.pondix +tm2 coatainsKeyM20090305*)» System, out pundnC +tm2 coatainsVaiuefqqqqq ), tm2 deanj.Iterator iti-=tm2.keySet().Lt

52、emtoct)>while(ia.basNext()System.out.prrntC M+itr.next()>7. 比較 Comparator IS I 1 Compatible 1611?綠)J8 TrcrSet炎有哪哼常用方法,解釋方法的介義?9. 比較TreeMap與TreeSet區(qū)別勺聯(lián)系(從用戶的角度、從開(kāi)發(fā)人員的角度)?10. -VW TreeMap與TreeSet的簡(jiǎn)笮應(yīng)用(汴總釘序)1、映射(MAP )足一種覽介,災(zāi)介屮的毎個(gè)數(shù)裾元系邡由W部分組成:_一的 鍵(KEY)部分和ft(ALUE )部分。2、Java 屮定義:public mteiiace Map將鍵

53、映射到值的對(duì)象。一個(gè)映射不能包介甫ft的鍵:毎個(gè)鍵扱多只能映射到 一個(gè)值。Map接U提供三種collection視閣,允許以鍵集、fft集成鍵-fft映射關(guān)系集的 形式舎看某個(gè)映射的內(nèi)容。映射聯(lián)冷定義力迭代器在映射的collecuon視閣上 返回其元累的順序。坫呰映射實(shí)現(xiàn)可明確保證其順序,如Tree Map類;另一呰 映射實(shí)現(xiàn)則不保iiE順序,如Hash Map類。3、用迭代器遍歷students里的元素:Iteratoi id = students.entiySet( ).itei3tor(), while (itt.liasNexc()gui.pnntln (iu.next(),用迭代器遍

54、歷students里的鍵值:Iterator in = suidents.keySet( ).irerator(); wlule (iti.iiasNexl()giii.printlii (iu.iiext(), 用迭代器遍歷students里的值:Iteratoi itr = students.values( ).iteiatoi(); while (iti.hasNext()gui.piiiKlii (iti.next(),4、Comparator接口允許用戶在一個(gè)類甲.珣蓋此接口.例如,如果我們想 Scriug對(duì)象按照字符串長(zhǎng)度來(lái)抹序宋鋝代原來(lái)的方法.例如:public class Bv

55、Lengtli mipleinents Coinpaiator public mt compaie (Object ol, Object o2) renirn (Stnng)o 1 ).lengrh() - (Scring)o2).length();)/ compaie/ uses Object s veision of equals )/ class ByLengihTieeMap youiMap = new TieeMap (new BxLength(),youiMap.pin (“yes”,new Integer (1); youiMap.put (“no”,new Integer (1

56、 ), yoinMap.pnt (“inaybe new Integer (1); youiMap.pin (“tme, new Integei (1),vourMap.put (“false”,new Inceger (1), /現(xiàn)在關(guān)鍵'/按u:度來(lái)排卬,其鍵不允許am a卩長(zhǎng)度相冋的). Iterator itr = yourMap.keySet( ).iteratoi(); while (itt.hasNext()giu.pnutln (iu.next(); 輸出結(jié)果:uovesHueniavbe5、由F thesaunisMap對(duì)象-棵紅JSW,向它的svuonyniList中插入第i個(gè) 元索時(shí),進(jìn)差情況下,大約箱要log2i對(duì)第1、2n個(gè)元素可以用總的花費(fèi) 來(lái)作為敁大開(kāi)銷(xiāo)時(shí)間:iilog2ii6、TreeSet1) TreeSet對(duì)象是一個(gè)小允許元紊屯®的苻序巣合。2) 雉本I: TreeSet類的對(duì)象足所打元東邡釘相Mffi的TreeMap對(duì)象。3) TreeSet類和BinSeaicliTiee類有相l(xiāng)“j的A法,但wb TreeSet類比較快,乍少 在最壞情況下.對(duì) 丁 add,leinoxe,和 contains, woistTiine(ii) log n, BinSeai

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論