《數(shù)據(jù)結(jié)構(gòu)》課程習(xí)題集_第1頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課程習(xí)題集_第2頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課程習(xí)題集_第3頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課程習(xí)題集_第4頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課程習(xí)題集_第5頁(yè)
已閱讀5頁(yè),還剩20頁(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、數(shù)據(jù)結(jié)構(gòu)課程習(xí)題集 第 1 頁(yè) (共 25 頁(yè))一、. 選擇題 . 1. 算法的計(jì)算量的大小稱(chēng)為計(jì)算的( )。A效率 B. 復(fù)雜性 C. 現(xiàn)實(shí)性 D. 難度.2. 算法的時(shí)間復(fù)雜度取決于( ).A問(wèn)題的規(guī)模 B. 待處理數(shù)據(jù)的初態(tài) C. A和B D. 難確定.3. 下面關(guān)于算法說(shuō)法錯(cuò)誤的是( )A算法最終必須由計(jì)算機(jī)程序?qū)崿F(xiàn) B.為解決某問(wèn)題的算法同為該問(wèn)題編寫(xiě)的程序含義是相同的C. 算法的可行性是指指令不能有二義性 D. 以上幾個(gè)都是錯(cuò)誤的.4從邏輯上可以把數(shù)據(jù)結(jié)構(gòu)分為( )兩大類(lèi)。A動(dòng)態(tài)結(jié)構(gòu)、靜態(tài)結(jié)構(gòu) B順序結(jié)構(gòu)、鏈?zhǔn)浇Y(jié)構(gòu) C線(xiàn)性結(jié)構(gòu)、非線(xiàn)性結(jié)構(gòu) D初等結(jié)構(gòu)、構(gòu)造型結(jié)構(gòu).5以下數(shù)據(jù)結(jié)構(gòu)中,

2、哪一個(gè)是線(xiàn)性結(jié)構(gòu)( )?A廣義表 B. 二叉樹(shù) C. 稀疏矩陣 D. 串.6下述哪一條是順序存儲(chǔ)結(jié)構(gòu)的優(yōu)點(diǎn)?( )A存儲(chǔ)密度大 B插入運(yùn)算方便 C刪除運(yùn)算方便 D可方便地用于各種邏輯結(jié)構(gòu)的存儲(chǔ)表示.7下面關(guān)于線(xiàn)性表的敘述中,錯(cuò)誤的是哪一個(gè)?( )A線(xiàn)性表采用順序存儲(chǔ),必須占用一片連續(xù)的存儲(chǔ)單元。B線(xiàn)性表采用順序存儲(chǔ),便于進(jìn)行插入和刪除操作。C線(xiàn)性表采用鏈接存儲(chǔ),不必占用一片連續(xù)的存儲(chǔ)單元。D線(xiàn)性表采用鏈接存儲(chǔ),便于插入和刪除操作。.8若某線(xiàn)性表最常用的操作是存取任一指定序號(hào)的元素和在最后進(jìn)行插入和刪除運(yùn)算,則利用( )存儲(chǔ)方式最節(jié)省時(shí)間。A順序表 B雙鏈表 C帶頭結(jié)點(diǎn)的雙循環(huán)鏈表 D單循環(huán)鏈表

3、.9設(shè)一個(gè)鏈表最常用的操作是在末尾插入結(jié)點(diǎn)和刪除尾結(jié)點(diǎn),則選用( )最節(jié)省時(shí)間。A. 單鏈表 B.單循環(huán)鏈表 C. 帶尾指針的單循環(huán)鏈表 D.帶頭結(jié)點(diǎn)的雙循環(huán)鏈表.10. 鏈表不具有的特點(diǎn)是( ). A插入、刪除不需要移動(dòng)元素 B可隨機(jī)訪(fǎng)問(wèn)任一元素 C不必事先估計(jì)存儲(chǔ)空間 D所需空間與線(xiàn)性長(zhǎng)度成正比.11. 設(shè)一個(gè)棧的輸入序列是 1,2,3,4,5,則下列序列中,是棧的合法輸出序列的是( )。A. 5 1 2 3 4 B. 4 5 1 3 2 C. 4 3 1 2 5 D. 3 2 1 5 4.12. 某堆棧的輸入序列為a, b,c ,d,下面的四個(gè)序列中,不可能是它的輸出序列的是( )。 A

4、. a,c,b,d B. b, c,d,a C. c, d,b, a D. d, c,a,b.13. 用鏈接方式存儲(chǔ)的隊(duì)列,在進(jìn)行刪除運(yùn)算時(shí)( )。A. 僅修改頭指針 B. 僅修改尾指針 C. 頭、尾指針都要修改 D. 頭、尾指針可能都要修改.14. 用不帶頭結(jié)點(diǎn)的單鏈表存儲(chǔ)隊(duì)列時(shí),其隊(duì)頭指針指向隊(duì)頭結(jié)點(diǎn),其隊(duì)尾指針指向隊(duì)尾結(jié)點(diǎn),則在進(jìn)行刪除操作時(shí)( )。 A僅修改隊(duì)頭指針 B. 僅修改隊(duì)尾指針 C. 隊(duì)頭、隊(duì)尾指針都要修改 D. 隊(duì)頭,隊(duì)尾指針都可能要修改.15下面關(guān)于串的的敘述中,哪一個(gè)是不正確的?( )A串是字符的有限序列 B空串是由空格構(gòu)成的串C模式匹配是串的一種重要運(yùn)算 D串既可以采

5、用順序存儲(chǔ),也可以采用鏈?zhǔn)酱鎯?chǔ).16 串是一種特殊的線(xiàn)性表,其特殊性體現(xiàn)在 ( )A可以順序存儲(chǔ) B數(shù)據(jù)元素是一個(gè)字符 C可以鏈接存儲(chǔ) D數(shù)據(jù)元素可以是多個(gè)字符.17關(guān)于空串與空格串,下面說(shuō)法正確的是( )。 A空串與空格串是相同的 B空串與空格串長(zhǎng)度是相同的 C空格串中存放的都是空格D空串中存放的都是NULL. 18圖中有關(guān)路徑的定義是( )。 A由頂點(diǎn)和相鄰頂點(diǎn)序偶構(gòu)成的邊所形成的序列 B由不同頂點(diǎn)所形成的序列C由不同邊所形成的序列 D上述定義都不是.19設(shè)無(wú)向圖的頂點(diǎn)個(gè)數(shù)為n,則該圖最多有( )條邊。An-1 Bn(n-1)/2 C n(n+1)/2 D0 En2.20一個(gè)n個(gè)頂點(diǎn)的連通

6、無(wú)向圖,其邊的個(gè)數(shù)至少為( )。An-1 Bn Cn+1 Dnlogn;.21某內(nèi)排序方法的穩(wěn)定性是指( )。 A該排序算法不允許有相同的關(guān)鍵字記錄 B該排序算法允許有相同的關(guān)鍵字記錄C平均時(shí)間為0(n log n)的排序方法 D以上都不對(duì) .22如果只想得到1000個(gè)元素組成的序列中第5個(gè)最小元素之前的部分排序的序列,用( )方法最快。A起泡排序 B快速排列 CShell排序 D堆排序 E簡(jiǎn)單選擇排序 .23排序趟數(shù)與序列的原始狀態(tài)有關(guān)的排序方法是( )排序法。A插入 B. 選擇 C. 冒泡 D. 都不是.24下面給出的四種排序方法中,排序過(guò)程中的比較次數(shù)與排序方法無(wú)關(guān)的是。( )A選擇排序

7、法 B. 插入排序法 C. 快速排序法 D. 都不是.25對(duì)序列15,9,7,8,20,-1,4進(jìn)行排序,進(jìn)行一趟后數(shù)據(jù)的排列變?yōu)?,9,-1,8,20,7,15;則采用的是( )排序。A. 選擇 B. 快速 C. 希爾 D. 冒泡.26. 設(shè)樹(shù)T的度為4,其中度為1,2,3和4的結(jié)點(diǎn)個(gè)數(shù)分別為4,2,1,1 則T中的葉子數(shù)為( )A5 B6 C7 D8.27一棵完全二叉樹(shù)上有1001個(gè)結(jié)點(diǎn),其中葉子結(jié)點(diǎn)的個(gè)數(shù)是( )A 250 B 500 C254 D505 E以上答案都不對(duì) .28. 有關(guān)二叉樹(shù)下列說(shuō)法正確的是( ). A二叉樹(shù)的度為2 B一棵二叉樹(shù)的度可以小于2 C二叉樹(shù)中至少有一個(gè)結(jié)點(diǎn)

8、的度為2 D二叉樹(shù)中任何一個(gè)結(jié)點(diǎn)的度都為2.29二叉樹(shù)的第I層上最多含有結(jié)點(diǎn)數(shù)為( ).A2I B 2I-1-1 C 2I-1 D2I -1.30對(duì)于有n 個(gè)結(jié)點(diǎn)的二叉樹(shù), 其高度為( ).Anlog2n Blog2n Cëlog2nû|+1 D不確定.31對(duì)二叉樹(shù)的結(jié)點(diǎn)從1開(kāi)始進(jìn)行連續(xù)編號(hào),要求每個(gè)結(jié)點(diǎn)的編號(hào)大于其左、右孩子的編號(hào),同一結(jié)點(diǎn)的左右孩子中,其左孩子的編號(hào)小于其右孩子的編號(hào),可采用( )次序的遍歷實(shí)現(xiàn)編號(hào)。A先序 B. 中序 C. 后序 D. 從根開(kāi)始按層次遍歷.32. 對(duì)N個(gè)元素的表做順序查找時(shí),若查找每個(gè)元素的概率相同,則平均查找長(zhǎng)度為( ) A(N+1)

9、/2 B. N/2 C. N D. (1+N)*N /2.33. 對(duì)線(xiàn)性表進(jìn)行二分查找時(shí),要求線(xiàn)性表必須( )A.以順序方式存儲(chǔ) B.以順序方式存儲(chǔ),且數(shù)據(jù)元素有序 C.以鏈接方式存儲(chǔ) D.以鏈接方式存儲(chǔ),且數(shù)據(jù)元素有序.34當(dāng)在一個(gè)有序的順序存儲(chǔ)表上查找一個(gè)數(shù)據(jù)時(shí),即可用折半查找,也可用順序查找,但前者比后者的查找速度( ). A必定快 B.不一定 C. 在大部分情況下要快 D. 取決于表遞增還是遞減.35. 具有12個(gè)關(guān)鍵字的有序表,折半查找的平均查找長(zhǎng)度( ) .A. 3.1 B. 4 C. 2.5 D. 5.36. 既希望較快的查找又便于線(xiàn)性表動(dòng)態(tài)變化的查找方法是 ( ) A順序查找

10、B. 折半查找 C. 索引順序查找 D. 哈希法查找二、填空題.1. 對(duì)于長(zhǎng)度為255的表,采用分塊查找,每塊的最佳長(zhǎng)度為_(kāi)。.2. 順序查找n個(gè)元素的順序表,若查找成功,則比較關(guān)鍵字的次數(shù)最多為_(kāi) _次;當(dāng)使用監(jiān)視哨時(shí),若查找失敗,則比較關(guān)鍵字的次數(shù)為_(kāi) _。.3在有序表A1.12中,采用二分查找算法查等于A(yíng)12的元素,所比較的元素下標(biāo)依次為_(kāi)。.4. 在一棵二叉樹(shù)中,第5層上的結(jié)點(diǎn)數(shù)最多為 個(gè)。.5.、n(n>0)個(gè)結(jié)點(diǎn)構(gòu)成的二叉樹(shù),葉結(jié)點(diǎn)最多有 個(gè),最少有 個(gè)。若二叉樹(shù)有m個(gè)葉結(jié)點(diǎn),則度為2的結(jié)點(diǎn)有 個(gè)。.6二叉樹(shù)中某一結(jié)點(diǎn)左子樹(shù)的深度減去右子樹(shù)的深度稱(chēng)為該結(jié)點(diǎn)的_。.7. 假定一

11、棵二叉樹(shù)的結(jié)點(diǎn)數(shù)為18,則它的最小深度為 ,最大深度為 ;.8. 在一棵二叉樹(shù)中,度為零的結(jié)點(diǎn)的個(gè)數(shù)為n 0,度為2的結(jié)點(diǎn)的個(gè)數(shù)為 n 2,則有n0= 。.9. 現(xiàn)有按中序遍歷二叉樹(shù)的結(jié)果為abc,問(wèn)有_種不同形態(tài)的二叉樹(shù)可以得到這一遍歷結(jié)果,這些二叉樹(shù)分別是_。.10若不考慮基數(shù)排序,則在排序過(guò)程中,主要進(jìn)行的兩種基本操作是關(guān)鍵字的_和記錄的_。.11直接插入排序用監(jiān)視哨的作用是_。.12. 不受待排序初始序列的影響,時(shí)間復(fù)雜度為O(N2)的排序算法是_,在排序算法的最后一趟開(kāi)始之前,所有元素都可能不在其最終位置上的排序算法是_。.13.判斷一個(gè)無(wú)向圖是一棵樹(shù)的條件是_。.14具有10個(gè)頂點(diǎn)

12、的無(wú)向圖,邊的總數(shù)最多為_(kāi)。.15若用n表示圖中頂點(diǎn)數(shù)目,則有_條邊的無(wú)向圖成為完全圖。.16空格串是指_ _,其長(zhǎng)度等于_ _。.17設(shè)T和P是兩個(gè)給定的串,在T中尋找等于P的子串的過(guò)程稱(chēng)為_(kāi) _,又稱(chēng)P為_(kāi) _。.18串的兩種最基本的存儲(chǔ)方式是_ _、_ _;兩個(gè)串相等的充分必要條件是_ _。 .19. 已知鏈隊(duì)列的頭尾指針?lè)謩e是f和r,則將值x入隊(duì)的操作序列是_。.20.向棧中壓入元素的操作是_。.21.在具有n個(gè)單元的循環(huán)隊(duì)列中,隊(duì)滿(mǎn)時(shí)共有_個(gè)元素。.22用S表示入棧操作,X表示出棧操作,若元素入棧的順序?yàn)?234,為了得到1342出棧順序,相應(yīng)的S和X的操作串為_(kāi)。.23. 單鏈表是

13、_的鏈接存儲(chǔ)表示。 .24. 在雙鏈表中,每個(gè)結(jié)點(diǎn)有兩個(gè)指針域,一個(gè)指向_,另一個(gè)指向_。.25鏈接存儲(chǔ)的特點(diǎn)是利用_來(lái)表示數(shù)據(jù)元素之間的邏輯關(guān)系。.26.順序存儲(chǔ)結(jié)構(gòu)是通過(guò)_表示元素之間的關(guān)系的;鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)是通過(guò)_表示元素之間的關(guān)系的。.27線(xiàn)性表L=(a1,a2,an)用數(shù)組表示,假定刪除表中任一元素的概率相同,則刪除一個(gè)元素平均需要移動(dòng)元素的個(gè)數(shù)是_。.28根據(jù)線(xiàn)性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中每一個(gè)結(jié)點(diǎn)包含的指針個(gè)數(shù),將線(xiàn)性鏈表分成_和_;而又根據(jù)指針的連接方式,鏈表又可分成_和_。.29數(shù)據(jù)的物理結(jié)構(gòu)包括 的表示和 的表示。.30抽象數(shù)據(jù)類(lèi)型的定義僅取決于它的一組_ _,而與_ _無(wú)關(guān),即不論

14、其內(nèi)部結(jié)構(gòu)如何變化,只要它的_ _不變,都不影響其外部使用。.31數(shù)據(jù)結(jié)構(gòu)中評(píng)價(jià)算法的兩個(gè)重要指標(biāo)是 .32. 數(shù)據(jù)結(jié)構(gòu)是研討數(shù)據(jù)的_ 和_ ,以及它們之間的相互關(guān)系,并對(duì)與這種結(jié)構(gòu)定義相應(yīng)的 ,設(shè)計(jì)出相應(yīng)的 _。.三程序填空題 1 已知單鏈表H為一個(gè)用帶頭結(jié)點(diǎn)的鏈表表示的線(xiàn)性表,如下算法是將其倒置。請(qǐng)?jiān)谙聞澗€(xiàn)處填上正確的語(yǔ)句。 P46template<class T>void Line_ListLink<T>:Reverse ( ) Line_ListNode<T> *p,*head=new Line_ListNode<T>( ); while

15、(first! =NULL) p=first;first=first>link; p>link=head - >link;head>link=p; first=head>link; delete head;2在順序表中隨機(jī)存取的數(shù)據(jù),很容易在順序表中實(shí)現(xiàn)按序號(hào)查找元素。代碼如下所示,請(qǐng)?jiān)谙聞澗€(xiàn)處填上正確的語(yǔ)句。 template<class T> bool Line_ListSqu<T>:Find(_ ,T& x) const /在線(xiàn)性表中查找第i個(gè)元素并用x返回 if (_ ) return false; x=elemi1; re

16、turn _ ; 3線(xiàn)性表的插入操作是指在線(xiàn)性表的第m1個(gè)數(shù)據(jù)元素和第m個(gè)數(shù)據(jù)元素之間插入一個(gè)新的數(shù)據(jù)元素x,其結(jié)果是使長(zhǎng)度為n的線(xiàn)性表(a1, a2 , am1, am, an)變成長(zhǎng)度為n+1的線(xiàn)性表(a1, a2 , am1, x, am, an),并且數(shù)據(jù)元素am1和am之間的邏輯關(guān)系發(fā)生了變化。 實(shí)現(xiàn)步驟如下:(1)合法性判斷:插入位置i是否合法?表是否已滿(mǎn)?(2)將第i至第n位的元素向后移動(dòng)一個(gè)位置;(3)將要插入的元素寫(xiě)到第i個(gè)數(shù)據(jù)元素的位置;(4)表長(zhǎng)加1。具體算法如下,請(qǐng)?jiān)谙聞澗€(xiàn)處填上正確的語(yǔ)句。template<class T>Line_ListSqu<T

17、>& Line_ListSqu<T>:Insert(int i,T& x) if (_ ) throw OutOfBounds( ); if (length=MaxSize) throw NoMem( ); for(_ ;j>=i1;j ) elemj+1=elemj; elemi1= _ ; length+; return _ ; .4.-冒泡排序(Bubble Sort)的基本思想是:設(shè)數(shù)組a中存放了n個(gè)數(shù)據(jù)元素,循環(huán)進(jìn)行n 趟如下的排序過(guò)程,請(qǐng)?jiān)谙聞澗€(xiàn)處填上正確的語(yǔ)句。void BubbleSort(DataType a , int n) int

18、i, j, flag=1;DataType temp;for(i = 1; _ ; i+) flag = 0;for(j = 0; _ ; j+) if(_ ) flag = 1;temp = aj;aj = aj+1;aj+1 = temp; .5.按值查找是指在線(xiàn)性表中查找與給定值x相等的數(shù)據(jù)元素,具體實(shí)現(xiàn)代碼如下,請(qǐng)?jiān)谙聞澗€(xiàn)處填上正確的語(yǔ)句。 template<class T> int Line_ListSqu<T>:Search(const T& x) const int_ ; if (IsEmpty( ) return 0;/線(xiàn)性表為空時(shí)返回0 whi

19、le(_ ) i+; if (elemi= =x) return +i; else return _ ; .6.線(xiàn)性表的刪除操作是使長(zhǎng)度為n的線(xiàn)性表(a1, a2, am1, am,an)變?yōu)殚L(zhǎng)度為n1的線(xiàn)性表(a1, a2, am1, am+1,an),并且數(shù)據(jù)元素am1、am和am+1之間的邏輯關(guān)系也會(huì)發(fā)生變化,需要把第m+1n個(gè)元素(共nm個(gè)元素)依次向前移動(dòng)一個(gè)位置來(lái)反映這種變化。具體實(shí)現(xiàn)步驟如下:判斷刪除位置i是否合法,合法則將該位置元素放入x中,否則拋出異常;將第i+1至第n位的元素向前移動(dòng)一個(gè)位置;表長(zhǎng)減1。具體算法如下,請(qǐng)?jiān)谙聞澗€(xiàn)處填上正確的語(yǔ)句。template<cla

20、ss T> Line_ListSqu<T>& Line_ListSqu<T>:Delete(_ ,T& x) if (Find(i,x) for(_ ;j<length;j+) elem_ =elemj; length ; return _ else throw OutOfBounds( ); .7. 假設(shè)以數(shù)組am存放循環(huán)隊(duì)列的元素,同時(shí)設(shè)變量rear 和length分別作為隊(duì)尾指針和隊(duì)中元素個(gè)數(shù),試給出判別此循環(huán)隊(duì)列的隊(duì)滿(mǎn)條件,并寫(xiě)出相應(yīng)入隊(duì)和出隊(duì)的算法(在出隊(duì)的算法中要返回隊(duì)頭元素)。請(qǐng)?jiān)谙聞澗€(xiàn)處填上正確的語(yǔ)句。#define m 10

21、0 int enqueue(int a, int rear, int length, int x) if(_) printf(“queue is full”); return 0; rear=(rear+1)% m; arear=x; length _; return length; int dequeue(int a, int rear, int length, int *x) if(_) printf(“queueempty”); return 0; *x= a (rear- length +m)%m; Length _; return length; .8.-刪除運(yùn)算是將單鏈表的第i個(gè)結(jié)

22、點(diǎn)刪去。先在單鏈表中找到第i1個(gè)結(jié)點(diǎn),再刪除其后的結(jié)點(diǎn)。具體算法代碼如下所,請(qǐng)?jiān)谙聞澗€(xiàn)處填上正確的語(yǔ)句。template<class T>Line_ListLink<T>& Line_ListLink<T>:Delete(int i,T& x) if (_| !first) throw OutOfBounds( );/刪除位置不合法 Line_ListNode<T> *p=first; if (_) first=first>link; else Line_ListNode<T> *q=first; int j=1

23、; /查找第i個(gè)結(jié)點(diǎn) while(_j<i) q=q>link;+j; if (!q | _) throw OutOfBounds( );/沒(méi)有第i個(gè)結(jié)點(diǎn) p=q>link;q>link=p>link; .9. 刪除運(yùn)算是將單鏈表的第i個(gè)結(jié)點(diǎn)刪去。先在單鏈表中找到第i1個(gè)結(jié)點(diǎn),再刪除其后的結(jié)點(diǎn)。具體算法代碼 如下所示:請(qǐng)?jiān)谙聞澗€(xiàn)處填上正確的語(yǔ)句。template<class T>Line_ListLink<T>& Line_ListLink<T>:Delete(int i,T& x) if (_) throw O

24、utOfBounds( );/刪除位置不合法 Line_ListNode<T> *p=first; if (_) first=first>link; else Line_ListNode<T> *q=first; int j=1; /查找第i個(gè)結(jié)點(diǎn) while(q && j<i) q=q>link;+j; if (!q | _) throw OutOfBounds( );/沒(méi)有第i個(gè)結(jié)點(diǎn) p=q>link;q>link=p>link; x=p>data;delete p; return *this; .10.求子

25、串Sub_String已知串S,1 pos Length_Str(S)且0 len Length_Str(S)pos+1,用串Sub返回S的自第i個(gè)字符起長(zhǎng)度為j的子串。請(qǐng)?jiān)谙聞澗€(xiàn)處填上正確的語(yǔ)句。string Sub_String(string &Sub, string S, int i, int j);int p;Sub.length = 0;if (i <= 0 | i > S.length | j<= 0 |_)return Sub; /參數(shù)錯(cuò)誤時(shí),返回空串for(p = i 1; _; p+) /把S.chi1至S.chi1+j復(fù)制到串Sub中Sub.chp

26、 i +1 = S.chp;Sub.chj ='0' _ = j;return Sub; 四閱讀理解題(描述算法思路,再綜合出其功能)本題說(shuō)明: 算法思路指的是對(duì)某種數(shù)據(jù)結(jié)構(gòu)(如,記錄序列), 進(jìn)行操作(如,移動(dòng)位置), 的處理步驟(如,1,2,3.). 算法功能指的是要達(dá)到的處理目標(biāo)(如,合并成有序的單鏈表.).1. 閱讀如下算法代碼:描述算法思路,再綜合出其功能.main() int i,max,a10;printf(“請(qǐng)輸入10個(gè)整數(shù):”); for(i=0;i<=10;i+) scanf(“%d”,&ai); max=a0; i=1;while(i<

27、10) if(ai>max) max=ai; i+; printf(“值為:”,max); .2. 閱讀如下算法代碼:描述算法思路,再綜合出其功能.void delete(node *head,int x) node *p,*q; q=head; p=head->next; while(p!=NULL) && (p->data!=x) q=p; p=p->next; if(p=NULL) printf("未找到x!n"); else if(q=head) printf("x為第一個(gè)結(jié)點(diǎn),無(wú)前趨!n"); else

28、q->data=x; q->next=p->next; free(p); .3. 閱讀如下算法代碼:描述算法思路,再綜合出其功能. int InsertPosList(struct List *L, int pos, ElemType x) int i; if(pos<1 | pos>L->size+1) /*若pos越界則插入失敗*/ return 0; if(L->size=L->MaxSize) /*重新分配更大的存儲(chǔ)空間*/ againMalloc(L);for(i=L->size-1; i>=pos-1; i-) L->

29、;listi+1=L->listi; L->listpos-1=x; L->size+;return 1; .4. 閱讀如下算法代碼:描述算法思路,再綜合出其功能.void InsertIncreaseList( Seqlist *L , Datatype x ) int i;if ( L->length>=ListSize)Error(“overflow");for ( i=L -> length ; i>0 && L->data i-1 > x ; i-)L->data i =L->dat

30、a i ; / 比較并移動(dòng)元素L->data i =x;L -> length+;.5. 閱讀如下算法代碼:描述算法思路,再綜合出其功能.void DeleteList ( LinkList L, DataType min , DataType max )ListNode *p , *q , *s;p=L;while( p->next && p->next->data <=min ) /找比min大的前一個(gè)元素位置p=p->next;q=p->next;/p指向第一個(gè)不大于min結(jié)點(diǎn)的直接前趨,q指向第一個(gè)大于min的結(jié)

31、點(diǎn)while(q &&q->data<max)s=q;q=q->next;free(s);/刪除結(jié)點(diǎn),釋放空間p->next=q;/將*p結(jié)點(diǎn)的直接后繼指針指向*q結(jié)點(diǎn).6. 閱讀如下算法代碼:描述算法思路,再綜合出其功能. void enqueue(int x) int temp; if(count=n) printf("隊(duì)列上溢出n"); Else count+;temp = (front+count)%n;Queuetemp=x; int dequeue() int temp; if(count=0) printf("

32、隊(duì)列下溢出n");else temp=Queuefront; front=(front+1)%n; count-; return temp; .7.閱讀如下算法代碼:描述算法思路,再綜合出其功能. Status ListInsert_L(LinkList &L, int i, ElemType e) /在帶頭結(jié)點(diǎn)的單鏈表L. p = L; k = 0; /初始化,p指向頭結(jié)點(diǎn),k為計(jì)數(shù)器 while (p && k < i-1) /逐步移動(dòng)指針p,直到p指向第i-1個(gè)元素或p為空 p = p->next; + k; / 找到第i-1個(gè)元素所在結(jié)點(diǎn)

33、if (!p | k > i-1) return ERROR; /無(wú)法插入 if(!(s = (LinkLinst) malloc(sizeof(LNode) /申請(qǐng)?jiān)豦的結(jié)點(diǎn)空間 return OVERFLOW; /內(nèi)存無(wú)空閑單元,無(wú)法申請(qǐng)到空間 s->data = e / 申請(qǐng)一個(gè)結(jié)點(diǎn)s; s->next = p->next; / 修改s的指針域指向p的下一結(jié)點(diǎn) p->next = s;/ 修改p的指針域指向s return OK; /LinstInsert_L.8.下閱讀如下算法代碼:描述算法思路,再綜合出其功能. Quicskort(Recordnode

34、 r,int low,int high) /*low和high為記錄序列的下界和上界*/int i,j; struct Recordnode x; i=low; j=high; x=rlow; while(i<j) /*在序列的右端掃描*/ while(i<j&&rj.key>=x.key) j-; if(i<j) ri=rj;i+;/*在序列的左端掃描*/while(i<j&&ri.key<x.key) i+;if(i<j) rj=ri;j-; ri=x; /*使用遞歸*/ if(low<i) Quicksort

35、(r,low,i-1); if(i<high) Quicksort(r,j+1,high); .9. 閱讀如下算法代碼:描述算法思路,再綜合出其功能. int Binsch(ElemType A, int low, int high, KeyType K) if(low<=high) int mid=(low+high)/2; /求出待查區(qū)間內(nèi)中點(diǎn)元素的下標(biāo) if(K=Amid.key) /查找成功返回元素的下標(biāo) return mid; else if(K<Amid.key) /在左子表上繼續(xù)查找 return Binsch(A,low,mid-1,K); else /在右子

36、表上繼續(xù)查找 return Binsch(A,mid+1,high,K); else return -1; /查找區(qū)間為空,查找失敗返回-1.10. 閱讀如下算法代碼:描述算法思路,再綜合出其功能. void charge(int a, int n) int i, j, temp; i=0; j=n-1; while(i<j) while(ai<0 && i<j) i+; while(aj>=0 && i<j) j-; if(i<j) temp=ai; ai=aj; aj=temp; i+; j-; .11. 閱讀如下算法代碼

37、:描述算法思路,再綜合出其功能. string Concat_Str(string &S, string T)int i;if (S.length + T.length < MaxLength) /連接后串的長(zhǎng)度小于串的最大長(zhǎng)度f(wàn)or(i = 0; i < T.length; i+) S.chS.length+i = T.chi;S.chS.length+T.length ='0'S.length += T.length;else /連接后串的長(zhǎng)度大于串的最大長(zhǎng)度, for(i = 0; i < MaxLength1S.length; i+) S.chS.length+i = T.chi;S.chMaxLength 1 ='0'S.length = MaxLength;return S; .12. 閱讀如下算法代碼:描述算法思路,再綜合出其功能. void MergeList_L(LinkList &La, LinkList &Lb, LinkList &a

溫馨提示

  • 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)論