日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构习题及解析二

發(fā)布時(shí)間:2023/12/16 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构习题及解析二 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

來源:我是碼農(nóng),轉(zhuǎn)載請保留出處和鏈接!
本文鏈接:數(shù)據(jù)結(jié)構(gòu)習(xí)題解析二
一、選擇題
1、數(shù)組的數(shù)據(jù)元素類型DataType可根據(jù)實(shí)際需要而定義。以下說法完全正確的是( )
A.數(shù)組的讀運(yùn)算可以讀取一個(gè)數(shù)據(jù)元素整體,寫運(yùn)算只能修改一個(gè)數(shù)據(jù)元素的一部分
B.數(shù)組的讀、寫運(yùn)算可以讀取或修改一個(gè)數(shù)據(jù)元素的一部分或一個(gè)整體
C.數(shù)組的讀、寫運(yùn)算只能讀取或修改一個(gè)數(shù)據(jù)元素的一部分
D.數(shù)組的讀、寫運(yùn)算只能讀取或修改一個(gè)數(shù)據(jù)元素整體

數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是數(shù)組的數(shù)據(jù)元素類型的定義。 數(shù)組的讀、寫運(yùn)算可以讀取或修改一個(gè)數(shù)據(jù)元素的一部分或一個(gè)整體,當(dāng)數(shù)據(jù)元素本身不是原子項(xiàng)時(shí),我們可以修改一個(gè)數(shù)據(jù)元素的一部分。因此,本題參考答案是B。
2、在以下棧的基本運(yùn)算中,不是加工型運(yùn)算的是( )
A.lnitStack(S)
B.Push(S,X)
C.Pop(S)
D.Empty(S)
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是加工型運(yùn)算的判別。 清空棧不是加工型運(yùn)算。因此,本題參考答案是D。
3、以下不穩(wěn)定的排序方法是( )
A.直接插入排序
B.冒泡排序
C.直接選擇排序
D.二路歸并排序
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是不穩(wěn)定的排序方法的判別。 假定在待排序的記錄序列中,存在多個(gè)具有相同的關(guān)鍵字的記錄,若經(jīng)過排序,這些記錄的相對次序保持不變,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,則稱這種排序算法是穩(wěn)定的;否則稱為不穩(wěn)定的。直接選擇排序是不穩(wěn)定的排序方法。因此,本題參考答案是C。
4、在一個(gè)長度為n的順序線性表中順序查找值為x的元素時(shí),查找成功時(shí)的平均查找長度(即x與元素的平均比較次數(shù),假定查找每個(gè)元素的概率都相等)為 ( )。
A.n
B.n/2
C.(n+1)/2
D.(n-1)/2
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是平均查找長度的計(jì)算方法。 為確定記錄在查找表中的位置,需和給定值進(jìn)行比較的關(guān)鍵字個(gè)數(shù)的期望值稱為查找算法在查找成功時(shí)的平均查找長度。按照此方法計(jì)算可得,本題參考答案是C。
5、以下說法錯(cuò)誤的是( )
A.數(shù)據(jù)的物理結(jié)構(gòu)是指數(shù)據(jù)在計(jì)算機(jī)內(nèi)實(shí)際的存儲形式
B.算法和程序沒有區(qū)別,所以在數(shù)據(jù)結(jié)構(gòu)中二者是通用的
C.對鏈表進(jìn)行插人和刪除操作時(shí),不必移動結(jié)點(diǎn)
D.雙鏈表中至多只有一個(gè)結(jié)點(diǎn)的后繼指針為空
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是數(shù)據(jù)結(jié)構(gòu)中相關(guān)基本概念。 算法是解決問題的步驟;程序是算法的代碼實(shí)現(xiàn)。算法要依靠程序來完成功能;程序需要算法作為靈魂。因此,本題參考答案是B。
6、順序隊(duì)列的出隊(duì)操作為( )
A.sq.front=(sq.front+1)% maxsize
B.sq.front=sq.front+1
C.sq.rear=(sq.rear+1)% maxsize
D.sq.rear=sq.rear+1
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是隊(duì)列的基本操作。 隊(duì)列是一種特殊的線性表,特殊之處在于它只允許在表的前端(front)進(jìn)行刪除操作,而在表的后端(rear)進(jìn)行插入操作,和棧一樣,隊(duì)列是一種操作受限制的線性表。進(jìn)行插入操作的端稱為隊(duì)尾,進(jìn)行刪除操作的端稱為隊(duì)頭。順序隊(duì)列的出隊(duì)操作為sq.front=sq.front+1。因此,本題參考答案是B。
7、對于線性表(7,34,55,25,64,46,20,10)進(jìn)行散列存儲時(shí),若選用 H(K)=K %9作為散列函數(shù),則散列地址為1的元素有( )個(gè)。
A.1
B.2
C.3
D.4
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是線性表散列存儲的特點(diǎn)。 散列函數(shù)即哈希函數(shù),哈希表中元素是由哈希函數(shù)確定的。將數(shù)據(jù)元素的關(guān)鍵字K作為自變量,通過一定的函數(shù)關(guān)系(稱為哈希函數(shù)),計(jì)算出的值,即為該元素的存儲地址。表示為:Addr = H(key)。線性表中的值就是函數(shù)中的自變量,代入函數(shù)可知,55,64,46和10散列地址都為1。因此,本題參考答案是D。
8、在以下隊(duì)列的基本運(yùn)算中,不是加工型運(yùn)算的是( )
A.InitQueue(Q)
B.EnQueue(Q,X)
C.OutQueu(Q,X)
D.GetHead(Q,x)
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是隊(duì)列的基本運(yùn)算。 獲取隊(duì)頭元素不是加工型運(yùn)算。因此,本題參考答案是D。
9、設(shè)連通圖G中的邊集E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},則從頂點(diǎn)a出發(fā)可以得到一種深度優(yōu)先遍歷的頂點(diǎn)序列為( )。
A.abedfc
B.acfebd
C.aebdfc
D.aedfcb
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是圖的深度優(yōu)先遍歷。 假設(shè)給定圖G的初態(tài)是所有頂點(diǎn)均未曾訪問過。在G中任選一頂點(diǎn)v為初始出發(fā)點(diǎn)(源點(diǎn)),則深度優(yōu)先遍歷可定義如下:首先訪問出發(fā)點(diǎn)v,并將其標(biāo)記為已訪問過;然后依次從v出發(fā)搜索v的每個(gè)鄰接點(diǎn)w。若w未曾訪問過,則以w為新的出發(fā)點(diǎn)繼續(xù)進(jìn)行深度優(yōu)先遍歷,直至圖中所有和源點(diǎn)v有路徑相通的頂點(diǎn)(亦稱為從源點(diǎn)可達(dá)的頂點(diǎn))均已被訪問為止。若此時(shí)圖中仍有未訪問的頂點(diǎn),則另選一個(gè)尚未訪問的頂點(diǎn)作為新的源點(diǎn)重復(fù)上述過程,直至圖中所有頂點(diǎn)均已被訪問為止。因此,本題參考答案是C。
10、根據(jù)操作的效果,可將運(yùn)算分成加工型運(yùn)算、引用型運(yùn)算兩種基本類型。對于表格處理中的五種功能以下解釋錯(cuò)誤的是( )
A.查找引用型運(yùn)算,功能是找出滿足某種條件的結(jié)點(diǎn)在s(線形結(jié)構(gòu))中的位置
B.讀取引用型運(yùn)算 功能是讀出s(線形結(jié)構(gòu))中某指定位置結(jié)點(diǎn)的內(nèi)容
C.插入引用型運(yùn)算,功能是在s(線形結(jié)構(gòu))的某指定位置上增加一個(gè)新結(jié)點(diǎn)
D.刪除加工型運(yùn)算,功能是撤消s(線形結(jié)構(gòu))某指定位置上的結(jié)點(diǎn)
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是加工型運(yùn)算、引用型運(yùn)算的功能。 插入是加工型運(yùn)算。因此,本題參考答案是C。
二、判斷題
1、快速排序是排序算法中平均性能最好的一種排序。( )
A正確
B錯(cuò)誤
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是快速排序的性能。 快速排序的基本思想是:通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個(gè)排序過程可以遞歸進(jìn)行,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列。快速排序是排序算法中平均性能最好的一種排序。因此,本題參考答案是A。
2、在一個(gè)順序存儲的循環(huán)隊(duì)列中, 隊(duì)頭指針指向隊(duì)頭元素的后一個(gè)位置。( )
A正確
B錯(cuò)誤
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是循環(huán)隊(duì)列的特性。 循環(huán)隊(duì)列中,由于入隊(duì)時(shí)尾指針向前追趕頭指針;出隊(duì)時(shí)頭指針向前追趕尾指針,造成隊(duì)空和隊(duì)滿時(shí)頭尾指針均相等。在一個(gè)順序存儲的循環(huán)隊(duì)列中, 隊(duì)頭指針指向隊(duì)頭元素的前一個(gè)位置。因此,本題參考答案是B。
3、散列法存儲的基本思想是由關(guān)鍵碼的值決定數(shù)據(jù)的存儲地址。( )
A正確
B錯(cuò)誤
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是散列法存儲的基本思想。 散列存儲,又稱hash存儲,是一種力圖將數(shù)據(jù)元素的存儲位置與關(guān)鍵碼之間建立確定對應(yīng)關(guān)系的查找技術(shù)。散列法存儲的基本思想是:由節(jié)點(diǎn)的關(guān)鍵碼值決定節(jié)點(diǎn)的存儲地址。散列技術(shù)除了可以用于查找外,還可以用于存儲。因此,本題參考答案是A。
4、在使用后綴表示實(shí)現(xiàn)計(jì)算器類時(shí)用到一個(gè)棧的實(shí)例, 它的作用是暫存運(yùn)算器對象。( )
A正確
B錯(cuò)誤
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是后綴表示的應(yīng)用。 棧(stack)又名堆棧,它是一種運(yùn)算受限的線性表。其限制是僅允許在表的一端進(jìn)行插入和刪除運(yùn)算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個(gè)棧插入新元素又稱作進(jìn)棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個(gè)棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。在使用后綴表示實(shí)現(xiàn)計(jì)算器類時(shí)用到一個(gè)棧的實(shí)例, 它的作用是暫存運(yùn)算器對象。因此,本題參考答案是A。
5、在用循環(huán)單鏈表表示的鏈?zhǔn)疥?duì)列中,可以不設(shè)隊(duì)頭指針,僅在鏈尾設(shè)置隊(duì)尾指針。( )
A正確
B錯(cuò)誤
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是循環(huán)單鏈表的應(yīng)用。 在用循環(huán)單鏈表表示的鏈?zhǔn)疥?duì)列中,可以不設(shè)隊(duì)頭指針,僅在鏈尾設(shè)置隊(duì)尾指針,由于是循環(huán)隊(duì)列,通過隊(duì)尾移動指針即可找到隊(duì)頭。因此,本題參考答案是A。
6、冒泡排序在初始關(guān)鍵字序列為逆序的情況下執(zhí)行的交換次數(shù)最多。( )
A正確
B錯(cuò)誤
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是冒泡排序的特點(diǎn)。 冒泡排序,是一種計(jì)算機(jī)科學(xué)領(lǐng)域的較簡單的排序算法。它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過來。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。冒泡排序在初始關(guān)鍵字序列為有序的情況下執(zhí)行的交換次數(shù)最少。冒泡排序在初始關(guān)鍵字序列為逆序的情況下執(zhí)行的交換次數(shù)最多。因此,本題參考答案是A。
7、在用單鏈表表示的鏈?zhǔn)疥?duì)列Q中,隊(duì)頭指針為Q->front,隊(duì)尾指針為Q->rear,則隊(duì)空條件為Q->front == Q->rear。( )
A正確
B錯(cuò)誤
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是單鏈表表示鏈?zhǔn)疥?duì)列的特點(diǎn)。 隊(duì)列是一種特殊的線性表,特殊之處在于它只允許在表的前端(front)進(jìn)行刪除操作,而在表的后端(rear)進(jìn)行插入操作,和棧一樣,隊(duì)列是一種操作受限制的線性表。進(jìn)行插入操作的端稱為隊(duì)尾,進(jìn)行刪除操作的端稱為隊(duì)頭。在用單鏈表表示的鏈?zhǔn)疥?duì)列Q中,隊(duì)頭指針為Q->front,隊(duì)尾指針為Q->rear,則隊(duì)空條件為Q->front == Q->rear+1。因此,本題參考答案是B。
8、遞歸定義的數(shù)據(jù)結(jié)構(gòu)通常用遞歸算法來實(shí)現(xiàn)對它的操作。( )
A正確
B錯(cuò)誤
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是遞歸定義數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)。 程序調(diào)用自身的編程技巧稱為遞歸( recursion)。遞歸做為一種算法在程序設(shè)計(jì)語言中廣泛應(yīng)用。 一個(gè)過程或函數(shù)在其定義或說明中有直接或間接調(diào)用自身的一種方法,它通常把一個(gè)大型復(fù)雜的問題層層轉(zhuǎn)化為一個(gè)與原問題相似的規(guī)模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復(fù)計(jì)算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語句來定義對象的無限集合。一般來說,遞歸需要有邊界條件、遞歸前進(jìn)段和遞歸返回段。當(dāng)邊界條件不滿足時(shí),遞歸前進(jìn);當(dāng)邊界條件滿足時(shí),遞歸返回。遞歸定義的數(shù)據(jù)結(jié)構(gòu)通常用遞歸算法來實(shí)現(xiàn)對它的操作。因此,本題參考答案是A。
9、二叉樹中有雙子女的父結(jié)點(diǎn),在中序遍歷中后繼一定是其中一個(gè)子女結(jié)點(diǎn)( )
A正確
B錯(cuò)誤
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是二叉樹的基本特性。 二叉樹是每個(gè)節(jié)點(diǎn)最多有兩個(gè)子樹的樹結(jié)構(gòu)。通常子樹被稱作"左子樹"和"右子樹"。二叉樹中有雙子女的父結(jié)點(diǎn),在中序遍歷中后繼不一定是其中一個(gè)子女結(jié)點(diǎn)。因此,本題參考答案是B。
10、遞歸調(diào)用算法與相同功能的非遞歸算法相比,主要問題在于重復(fù)計(jì)算太多,而且調(diào)用本身需要分配額外的空間和傳遞數(shù)據(jù)和控制,所以時(shí)間與空間開銷通常都比較大。( )
A正確
B錯(cuò)誤
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是遞歸調(diào)用算法的缺點(diǎn)。 遞歸算法解題相對常用的算法如普通循環(huán)等,運(yùn)行效率較低。因此,應(yīng)該盡量避免使用遞歸,除非沒有更好的算法或者某種特定情況,遞歸更為適合的時(shí)候。在遞歸調(diào)用的過程當(dāng)中系統(tǒng)為每一層的返回點(diǎn)、局部量等開辟了棧來存儲。遞歸次數(shù)過多容易造成棧溢出等。因此,本題參考答案是A。
三、分析題
1、給定表(45,36,56,6,64,78,8,96),按數(shù)據(jù)元素在表中的次序構(gòu)造一棵二叉排序樹。
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是二叉排序樹的構(gòu)造方法。
二叉排序樹或者是一棵空樹,或者是具有下列性質(zhì)的二叉樹:
(1)若左子樹不空,則左子樹上所有結(jié)點(diǎn)的值均小于它的根結(jié)點(diǎn)的值;
(2)若右子樹不空,則右子樹上所有結(jié)點(diǎn)的值均大于或等于它的根結(jié)點(diǎn)的值;
(3)左、右子樹也分別為二叉排序樹;
(4)沒有鍵值相等的節(jié)點(diǎn)。
根據(jù)二叉排序樹的定義即可根據(jù)給定表構(gòu)造出出二叉排序樹。 因此,本題答題要點(diǎn)如下:
二叉排序樹為:

2、判斷序列(16,19,10,15,4,23,36,20)是否為(小頂)堆?為什么?如果不是,請按照建立堆的思想把它調(diào)整為堆,并用圖表示建堆的過程。
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是堆的定義和建立方法。
n個(gè)關(guān)鍵字序列Kl,K2,…,Kn稱為堆,當(dāng)且僅當(dāng)該序列滿足如下性質(zhì)(簡稱為堆性質(zhì)): (1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤ n/2 ) 若將此序列所存儲的向量R[1…n]看做是一棵完全二叉樹的存儲結(jié)構(gòu),則堆實(shí)質(zhì)上是滿足如下性質(zhì)的完全二叉樹:樹中任一非葉結(jié)點(diǎn)的關(guān)鍵字均不大于(或不小于)其左右孩子(若存在)結(jié)點(diǎn)的關(guān)鍵字。根結(jié)點(diǎn)(亦稱為堆頂)的關(guān)鍵字是堆里所有結(jié)點(diǎn)關(guān)鍵字中最小者的堆稱為小根堆。根結(jié)點(diǎn)(亦稱為堆頂)的關(guān)鍵字是堆里所有結(jié)點(diǎn)關(guān)鍵字中最大者,稱為大根堆。
因此,本題答題要點(diǎn)如下:
因?yàn)椴粷M足(ai<a2i 和ai<a2i+1)如a1=16,a3=10,所以不是小頂堆。 可以調(diào)整為堆:(4,15,10,16,19,23,36,20)

3、簡述順序隊(duì)列、循環(huán)隊(duì)列的類型定義。
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是順序隊(duì)列、循環(huán)隊(duì)列的定義。
順序隊(duì)列的類型定義如下:
該類型變量有三個(gè)域:data,front,rear。其中data存儲隊(duì)中元素的一維數(shù)組。隊(duì)頭指針front和隊(duì)尾指針rear定義為整型變量,實(shí)際取值范圍為0~maxsize-1。 循環(huán)隊(duì)列的類型定義如下:

4、給定有序表D={006,087,155,188,220,465,505,508,511,586,656,670,700,766,897,908},用二分查找法在D中查找586,試用圖示法表示出查找過程。
數(shù)據(jù)結(jié)構(gòu)練習(xí)題解析解析:本題考點(diǎn)是二分查找算法的定義及過程。
二分查找又稱折半查找,優(yōu)點(diǎn)是比較次數(shù)少,查找速度快,平均性能好;其缺點(diǎn)是要求待查表為有序表,且插入刪除困難。因此,折半查找方法適用于不經(jīng)常變動而查找頻繁的有序列表。首先,假設(shè)表中元素是按升序排列,將表中間位置記錄的關(guān)鍵字與查找關(guān)鍵字比較,如果兩者相等,則查找成功;否則利用中間位置記錄將表分成前、后兩個(gè)子表,如果中間位置記錄的關(guān)鍵字大于查找關(guān)鍵字,則進(jìn)一步查找前一子表,否則進(jìn)一步查找后一子表。重復(fù)以上過程,直到找到滿足條件的記錄,使查找成功,或直到子表不存在為止,此時(shí)查找不成功。
因此,本題答題要點(diǎn)如下:

總結(jié)

以上是生活随笔為你收集整理的数据结构习题及解析二的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。