數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)答題_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)答題_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)答題_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)答題_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)答題_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、-作者xxxx-日期xxxx數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)答題【精品文檔】試比較順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的優(yōu)缺點(diǎn)。在什么情況下用順序表比鏈表好?答:順序存儲(chǔ)時(shí),相鄰數(shù)據(jù)元素的存放地址也相鄰(邏輯與物理統(tǒng)一);要求內(nèi)存中可用存儲(chǔ)單元的地址必須是連續(xù)的。優(yōu)點(diǎn):存儲(chǔ)密度大(1),存儲(chǔ)空間利用率高。缺點(diǎn):插入或刪除元素時(shí)不方便。鏈?zhǔn)酱鎯?chǔ)時(shí),相鄰數(shù)據(jù)元素可隨意存放,但所占存儲(chǔ)空間分兩部分,一部分存放結(jié)點(diǎn)值,另一部分存放表示結(jié)點(diǎn)間關(guān)系的指針優(yōu)點(diǎn):插入或刪除元素時(shí)很方便,使用靈活。缺點(diǎn):存儲(chǔ)密度小(next-next 和 rear, 查找時(shí)間都是O(1)。若用頭指針來(lái)表示該鏈表,則查找終端結(jié)點(diǎn)的時(shí)間為O(n)。假定有四個(gè)元素

2、A, B, C, D依次進(jìn)棧,進(jìn)棧過(guò)程中允許出棧,試寫(xiě)出所有可能的出棧序列。共有14種可能的出棧序列,即為:ABCD, ABDC,ACBD, ACDB,BACD,ADCB,BADC,BCAD, BCDA,BDCA,CBAD, CBDA,CDBA, DCBA什么是隊(duì)列的上溢現(xiàn)象?一般有幾種解決方法,試簡(jiǎn)述之。在隊(duì)列的順序存儲(chǔ)結(jié)構(gòu)中,設(shè)隊(duì)頭指針為front,隊(duì)尾指針為rear,隊(duì)列的容量(即存儲(chǔ)的空間大小)為maxnum。當(dāng)有元素要加入隊(duì)列(即入隊(duì))時(shí),若rear=maxnum,則會(huì)發(fā)生隊(duì)列的上溢現(xiàn)象,此時(shí)就不能將該元素加入隊(duì)列。對(duì)于隊(duì)列,還有一種“假溢出”現(xiàn)象,隊(duì)列中尚余有足夠的空間,但元素卻不

3、能入隊(duì),一般是由于隊(duì)列的存儲(chǔ)結(jié)構(gòu)或操作方式的選擇不當(dāng)所致,可以用循環(huán)隊(duì)列解決。一般地,要解決隊(duì)列的上溢現(xiàn)象可有以下幾種方法:(1)可建立一個(gè)足夠大的存儲(chǔ)空間以避免溢出,但這樣做往往會(huì)造成空間使用率低,浪費(fèi)存儲(chǔ)空間。(2)要避免出現(xiàn)“假溢出”現(xiàn)象可用以下方法解決:第一種:采用移動(dòng)元素的方法。每當(dāng)有一個(gè)新元素入隊(duì),就將隊(duì)列中已有的元素向隊(duì)頭移動(dòng)一個(gè)位置,假定空余空間足夠。第二種:每當(dāng)刪去一個(gè)隊(duì)頭元素,則可依次移動(dòng)隊(duì)列中的元素總是使front指針指向隊(duì)列中的第一個(gè)位置。第三種:采用循環(huán)隊(duì)列方式。將隊(duì)頭、隊(duì)尾看作是一個(gè)首尾相接的循環(huán)隊(duì)列,即用循環(huán)數(shù)組實(shí)現(xiàn),此時(shí)隊(duì)首仍在隊(duì)尾之前,作插入和刪除運(yùn)算時(shí)仍遵循

4、“先進(jìn)先出”的原則。如何知道循環(huán)隊(duì)列是空還是滿(mǎn)?第一,采用計(jì)數(shù)器來(lái)判斷,空時(shí),計(jì)數(shù)器為0,滿(mǎn)時(shí),計(jì)數(shù)器為maxsize;第二,另設(shè)一個(gè)布爾變量以匹別隊(duì)列的空和滿(mǎn);第三,少用一個(gè)元素的空間,約定入隊(duì)前,測(cè)試尾指針在循環(huán)意義下加1后是否等于頭指針,若相等則認(rèn)為隊(duì)滿(mǎn)(注意:rear所指的單元始終為空);說(shuō)明線性表,棧,隊(duì)列的異同點(diǎn)相同點(diǎn):都是線性結(jié)構(gòu),都是邏輯結(jié)構(gòu)的概念,都可以用順序存儲(chǔ)或者鏈表存儲(chǔ). 棧和隊(duì)列兩種特殊的線性表,即受限的線性表,只是對(duì)插入, 刪除運(yùn)算加以限制.不同點(diǎn):1 運(yùn)算規(guī)則不同: 線性表為隨機(jī)存取. 棧只允許在一端進(jìn)行插入.刪除運(yùn)算. 列隊(duì)只允許在一端進(jìn)行插入,另一端進(jìn)行刪除運(yùn)

5、算.2 用途不同,堆棧用于子程序調(diào)用和保護(hù)現(xiàn)場(chǎng),隊(duì)列用于多道作業(yè)處理,指令存儲(chǔ)及其他運(yùn)算等等.當(dāng)你為解決某一問(wèn)題而選擇數(shù)據(jù)結(jié)構(gòu)時(shí),應(yīng)從哪些方面考慮?通常從兩方面考慮:第一是算法所需的存儲(chǔ)空間量;第二是算法所需的時(shí)間。對(duì)算法所需的時(shí)間又涉及以下三點(diǎn):(1)程序運(yùn)行時(shí)所需輸入的數(shù)據(jù)總量。(2)計(jì)算機(jī)執(zhí)行每條指令所需的時(shí)間。(3)程序中指令重復(fù)執(zhí)行的次數(shù)簡(jiǎn)述邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)的關(guān)系答:數(shù)據(jù)的邏輯結(jié)構(gòu)反映數(shù)據(jù)元素之間的邏輯關(guān)系(即數(shù)據(jù)元素之間的關(guān)聯(lián)方式或“鄰接關(guān)系”),數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)中的表示,包括數(shù)據(jù)元素的表示及其關(guān)系的表示。數(shù)據(jù)運(yùn)算是數(shù)據(jù)結(jié)構(gòu)的一個(gè)重要方面,試舉例說(shuō)明兩個(gè)數(shù)據(jù)結(jié)構(gòu)的

6、邏輯結(jié)構(gòu)和存儲(chǔ)方式完全相同,只是對(duì)于運(yùn)算的定義不同,因而兩個(gè)結(jié)構(gòu)具有顯著不同的特性,則這兩個(gè)數(shù)據(jù)結(jié)構(gòu)是不同的.答:棧和隊(duì)列的邏輯結(jié)構(gòu)相同,其存儲(chǔ)表示也可相同(順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)),但由于其運(yùn)算集合不同而成為不同的數(shù)據(jù)結(jié)構(gòu)。線性表有兩種存儲(chǔ)結(jié)構(gòu):一是順序表,二是鏈表。試問(wèn):(1)兩種存儲(chǔ)表示各有哪些主要優(yōu)缺點(diǎn)?(2)如果有n個(gè)線性表同時(shí)并存,并且在處理過(guò)程中各表的長(zhǎng)度會(huì)動(dòng)態(tài)發(fā)生變化,線性表的總數(shù)也會(huì)自動(dòng)地改變。在此情況下,應(yīng)選用哪種存儲(chǔ)結(jié)構(gòu)?為什么?(3)若線性表的總數(shù)基本穩(wěn)定,且很少進(jìn)行插入和刪除,但要求以最快的速度存取線性表中的元素,那么,應(yīng)采用哪種存儲(chǔ)結(jié)構(gòu)?為什么?解答:(1)順序存儲(chǔ)是按

7、索引(隱含的)直接存取數(shù)據(jù)元素,方便靈活,效率高,但插入、刪除操作時(shí)將引起元素移動(dòng),因而降低效率;鏈接存儲(chǔ)內(nèi)存采用動(dòng)態(tài)分配,利用率高,但需增設(shè)指示結(jié)點(diǎn)之間有序關(guān)系的指針域,存取數(shù)據(jù)元素不如順序存儲(chǔ)方便,但結(jié)點(diǎn)的插入、刪除操作十分簡(jiǎn)單。(2)應(yīng)選用鏈接表存儲(chǔ)結(jié)構(gòu)。其理由是,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)用一組任意的存儲(chǔ)單元依次存儲(chǔ)線性表里各元素,這里存儲(chǔ)單元可以是連續(xù)的,也可以是不連續(xù)的。這種存儲(chǔ)結(jié)構(gòu),在對(duì)元素作插入或刪除運(yùn)算時(shí),不需要移動(dòng)元素,僅修改指針即可。所以很容易實(shí)現(xiàn)表的容量擴(kuò)充。(3)應(yīng)選用順序存儲(chǔ)結(jié)構(gòu)。其理由是,每個(gè)數(shù)據(jù)元素的存儲(chǔ)位置和線性表的起始位置相差一個(gè)和數(shù)據(jù)元素在線性表中的序號(hào)成正比的常數(shù)。由

8、此,只要確定了起始位置,線性表中任一數(shù)據(jù)元素都可隨機(jī)存取,所以線性表的順序存儲(chǔ)結(jié)構(gòu)是一種隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)。而鏈表則是一種順序存取的存儲(chǔ)結(jié)構(gòu)。2、用線性表的順序結(jié)構(gòu)來(lái)描述一個(gè)城市的設(shè)計(jì)和規(guī)劃合適嗎?為什么?不合適。因?yàn)橐粋€(gè)城市的設(shè)計(jì)和規(guī)劃涉及非常多的項(xiàng)目,很復(fù)雜,經(jīng)常需要修改、擴(kuò)充和刪除各種信息,才能適應(yīng)不斷發(fā)展的需要。有鑒于此,順序線性表不能很好適應(yīng)其需要,故是不合適的。3、在單鏈表和雙向表中,能否從當(dāng)前結(jié)點(diǎn)出發(fā)訪問(wèn)到任一結(jié)點(diǎn)?在單鏈表中只能由當(dāng)前結(jié)點(diǎn)訪問(wèn)其后的任一結(jié)點(diǎn),因?yàn)闆](méi)有指向其前驅(qū)結(jié)點(diǎn)的指針。而在雙向鏈表中,既有指向后繼結(jié)點(diǎn)的指針又有指向前驅(qū)結(jié)點(diǎn)的指針,故可由當(dāng)前結(jié)點(diǎn)出發(fā)訪問(wèn)鏈表中任

9、一結(jié)點(diǎn)。對(duì)鏈表設(shè)置頭結(jié)點(diǎn)的作用是什么?(至少說(shuō)出兩條好處)(1)對(duì)帶頭結(jié)點(diǎn)的鏈表,在表的任何結(jié)點(diǎn)之前插入結(jié)點(diǎn)或刪除表中任何結(jié)點(diǎn),所要做的都是修改前一結(jié)點(diǎn)的指針域,因?yàn)槿魏卧亟Y(jié)點(diǎn)都有前驅(qū)結(jié)點(diǎn)。若鏈表沒(méi)有頭結(jié)點(diǎn),則首元素結(jié)點(diǎn)沒(méi)有前驅(qū)結(jié)點(diǎn),在其前插入結(jié)點(diǎn)或刪除該結(jié)點(diǎn)時(shí)操作會(huì)復(fù)雜些。(2)對(duì)帶頭結(jié)點(diǎn)的鏈表,表頭指針是指向頭結(jié)點(diǎn)的非空指針,因此空表與非空表的處理是一樣的。在單鏈表、雙鏈表和單循環(huán)表中,若僅知道指針p指向某結(jié)點(diǎn),不知道頭指針,能否將結(jié)點(diǎn)*p從相應(yīng)的鏈表中刪去?若可以,其時(shí)間復(fù)雜度各為多少?1.單鏈表。當(dāng)我們知道指針p指向某結(jié)點(diǎn)時(shí),能夠根據(jù)該指針找到其直接后繼,但是由于不知道其頭指針,所以無(wú)法訪問(wèn)到p指針指向的結(jié)點(diǎn)的直接前趨。因此無(wú)法刪去該結(jié)點(diǎn)。2.雙鏈表。由于這樣的鏈表提供雙向鏈接,因此根據(jù)已

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論