1. 程式人生 > >資料結構補充題(C++)(帶答案)

資料結構補充題(C++)(帶答案)

補充習題:第一章
1.資料結構是研究資料的( C )以及它們之間的相互關係。
  A)儲存結構,物理結構    B)理想結構,抽象結構
  C)物理結構,邏輯結構    D)抽象結構,邏輯結構
2.在資料結構中,與所使用的計算機無關的是資料的( C )結構。
  A)儲存   B)物理   C)邏輯   D)物理與儲存
3.資料結構課程主要研究以下三方面的內容,它們是(D )。
  A)資料、資料元素、資料型別
  B)資料元素、資料型別、演算法實現
  C)資料元素、資料的邏輯結構、資料的儲存結構
  D)資料的邏輯結構、資料的儲存結構、資料的運算
4.在以下的複雜度量級中,量級最低的是(B )。
  A)O(n)   B)O(log2n)    C)O(nlog2n)   D)O(n2)
5.在下列敘述中,正確的是(C )。
  A)資料的邏輯結構要考慮資料元素本身的內容
  B)不同型別的資料元素可以歸類到同一的邏輯結構中
  C)資料元素之間的關聯關係在資料的邏輯結構中體現
  D)資料元素是資料不可分割的最小標識單位
6.計算機演算法必須具備輸入、輸出和(B )等五個特性。
  A)可行性、可移植性和可擴充性
  B)可行性、確定性和有窮性C
  C)確定性、穩定性和有窮性
  D)易讀性、穩定性和安全性
7.演算法分析的目的是(D )。
  A)找出資料結構的合理性  B)研究演算法中的輸入/輸出關係
  C)分析演算法的易讀性      D)分析演算法的效率以求改進
8.設n>=10,下面程式段的時間複雜度是(D )。
  for(i=10; i<n; i++)
  {  j=k=0;
     while(j+k<=i)
       if (j>k) k++;
       else  j++;
  }
  A)O(log2n)  B)O(n)   C)O(nlog2n)   D)O(n2)
9.計算機演算法是指(D  )。
  A)計算方法     B)排序方法     
  C)排程方法     D)解決問題的有限運算序列
10.資料的定義取決於資料的邏輯結構,而資料的實現取決於資料的物理結構(A  )。
   A)正確          B) 不正確 
11.下面說法錯誤的是(A  ) 
   A)演算法原地工作的含義是指不需要任何額外的輔助空間
   B)在相同的規模n下,複雜度為O(n)的演算法在時間上一般優於複雜度O(2n)的演算法
   C)所謂時間複雜度是指最壞情況下,估算演算法執行時間的一個上界
   D)同一個演算法,實現的語言級別越高,執行效率就越低
補充習題:判斷
1. 資料元素是資料的最小單位。(  0 )
2. 記錄是資料處理的最小單位。 (  0 )
3. 資料的邏輯結構是指資料的各資料項之間的邏輯關係;( 0  )
4. 演算法的優劣與演算法描述語言無關,但與所用計算機有關。(  0)
5. 健壯的演算法不會因非法的輸入資料而出現莫名其妙的狀態。(1  )
6. 演算法可以用不同的語言描述,如果用C 語言或PASCAL語言等高階語言來描述,則演算法實際上就是程式了。(0   )
7. 資料的物理結構是指資料在計算機內的實際儲存表示。(1 ) 
8. 資料結構的抽象操作的定義與具體實現有關。( 0 )
9. 資料的邏輯結構說明資料元素之間的順序關係,它依賴於計算機的儲存結構. (  0 ) 
補充習題:語句頻度與時間複雜度
1.計算機執行下面的語句時,語句s的執行次數為: (n+3)(n-2)/2。
    for(i=l;i<n-l;i++) 
       for(j=n;j>=i;j--)
           s; 
2.下面程式段中帶有下劃線的語句執行次數的量級是( log2n2 ) 
    i=n*n
    while (i!=1)
         i=i / 2;
3.下面程式段中帶下劃線的語句的執行次數的數量級是(nlog2n )。
    i=1;
    while( i<n)
    {  for (j=1;j<=n;j++)
       {   x=x+1;
            i=i*2;
       }
    }
補充習題:語句頻度與時間複雜度
4. 在下面的程式段中,對x的賦值語句的頻度為: n(n+1)(n+2)/6   O(n3) 
    for(i=1;i<=n; i++)
       for(j=1;j<=i;j++)
           for (k=1;k<=j; k++)
                x=x+1;
5. 已知如下程式段,則各語句的頻度為:
    for(i= n;i>=1; i- -)     //語句1      n+1
    {     x=x+1;                      //語句2      n 
          for(j= n;j>=i;j--) //語句3      n(n+3)/2
                y=y+1;                   //語句4      n(n+1)/2 
    }
補充習題:第二章
1.下列有關線性表的敘述中,正確的是(A  )。
  A)線性表中元素之間的關係是線性關係
  B)線性表中至少有一個元素
  C)線性表中的任一元素有且僅有一個直接前趨
  D)線性表中的任一元素有且僅有一個直接後繼
2.下述哪一條是順序儲存結構的優點?(A  )
  A)儲存密度大     B)插入元素方便
  C)刪除元素方便   D)可方便地用於各種邏輯結構的儲存表示
3.在一個長度為n的順序表中,在第i個元素(1<=i<=n)之前插入一個新元素時需向後移動( D )個元素。
  A)1    B)n-i    C)n-i-1    D)n-i+1
4.如果某線性表中最常用的操作是取第i個元素和找第i個元素的前驅,那麼採用( A )儲存方式最節省時間。
  A)順序表       B)單鏈表
  C)雙鏈表       D)迴圈連結串列
5.對順序儲存的線性表,假設其長度為n,且在任何位置上插入元素操作都是等概率的。則插入一個元素時平均要移動表中的( A )個元素。
  A)n/2      B)(n+1)/2     C)(n-1)/2     D)n
6.下述哪一條是順序儲存結構的缺點?(C  )
  A)儲存密度太大                
  B)隨機存取
  C)一般要估計最大的需要空間 
  D)只能應用於少數幾種邏輯結構的儲存表示
7.在單鏈表中,增加頭結點的目的是( C )。
  A)使單鏈表至少有一個結點
  B)標誌表中首結點的位置
  C)方便運算的實現
  D)說明單鏈表是線性表的鏈式儲存表示
8.單鏈表不具有的特點是( A )。
  A)可隨機訪問任一元素   B)插入和刪除不需要移動元素
  C)不必事先估計儲存空間 D)所需空間和線性表長度成正比
9.迴圈連結串列的主要優點是(D  )。 
  A)不再需要頭指標了
  B)已知某個結點的位置後,能夠容易找到他的直接前趨
  C)在進行插入、刪除運算時,能更好的保證連結串列不斷開
  D)從表中的任意結點出發都能掃描到整個連結串列
10.連結串列對於資料元素的插入與刪除是(B  )。
   A)不需移動結點,不需改變結點指標
   B)不需移動結點,只需改變結點指標
   C)只需移動結點,不需改變結點指標
   D)既需移動結點,又需改變結點指標
11.在一個單鏈表中,已知q所指結點是p所指結點的前驅結點,若要在q和p所指結點之間插入s所指的結點,則執行( B )。
   A)s->next = p->next; p->next = s;
   B)q->next = s; s->next = p;
   C)p->next = s; s->next = q;
   D)p->next = s->next; s->next = p;
12.向一個有115個元素的順序表中插入一個新元素並保持原來順序不變,在等概率情況下平均要移動(C  )個元素。
   A) 115     B) 114     C) 58     D) 57 
13.帶頭結點的單鏈表Head為空表的判定條件是 (B   ) 。
   A) Head->next==Head   B) Head->next==NULL
   C) Head!=NULL         D) Head==NULL
14.若要求能快速地實現在連結串列的末尾插入結點和刪除第一個結點的運算,則選擇(B   )最合適。
   A) 單鏈表       B) 帶尾指標的單迴圈連結串列
   C) 雙鏈表       D) 雙迴圈連結串列
15.給定有n個元素的向量,建立一個有序單鏈表的時間複雜度是( D )。
   A)O(n)    B)O(log2n)     C)O(nlog2n)    D. O(n2)
16.線性表採用鏈式儲存時,其地址( C )。
   A)必須是連續的     B)必須是不連續的
   C)連續與否均可     D)部分地址必須是連續的
17.在一個具有n個結點的有序單鏈表中,插入一個新的結點並使之仍然有序的時間複雜度是( A )。
   A)O(n)   B)O(log2n)    C)O(1)   D)O(n2)
補充習題:第三章
1.在下列排序演算法中,時間複雜度不受資料初始特性影響,恆為O(n2)的是(C  )。
  A)插入排序  B)氣泡排序  C)選擇排序  D)堆排序
2.在各種排序方法中,從未排序序列中依次取出元素與已排序序列中的元素進行比較,將其放入已排序序列的正確位置上的方法,稱為(C  )。
  A)希爾排序  B)氣泡排序  C)插入排序  D)選擇排序
3.快速排序方法在( C)情況下最不利於發揮其長處。
  A)要排序的資料量太大 
  B)要排序的資料含有多個相同值
  C)要排序的資料已基本有序     
  D)要排序的資料個數為奇數
4.已知10個數據元素為(54,28,16,34,73,62,95,60,26,43),對該數列按從小到大排序,經過一趟氣泡排序後的序列為( B)。
  A)16,28,34,54,73,62,60,26,43,95
  B)28,16,34,54,62,73,60,26,43,95
  C)28,16,34,54,62,60,73,26,43,95
  D)16,28,34,54,62,60,73,26,43,95
5.一組記錄的關鍵字為(46,79,56,38,40,84),則利用快速排序的方法,以第一個記錄為基準元素得到的一次劃分結果為( C )。
  A)38,40,46,56,79,84   B)40,38,46,79,56,84 
  C)40,38,46,56,79,84   D)40,38,46,84,56,79 
6.用某種排序方法對線性表(25,84,21,47,15,27,68,35,20)進行排序時,元素序列的變化情況如下:
  (1)20,15,21,25,47,27,68,35,84 
  (2)15,20,21,25,35,27,47,68,84
  (3)15,20,21,25,27,35,47,68,84
則所採用的排序方法是(D  )。
  A)選擇排序  B)希爾排序  C)歸併排序  D)快速排序
7.在待排序的元素序列基本有序的前提下,效率最高的排序方法是( A)。 
  A)插入排序      B)快速排序
  C)歸併排序      D)選擇排序
8.一組記錄的排序碼為(20,29,11,74,35,3,8,56),則利用堆排序方法建立的初始(小頂)堆為( B )。
  A)20,29,11,74,35,3,8,56
  B)3,29,8,56,35,11,20,74
  C)3,8,11,20,29,35,56,74
  D)20,29,3,8,11,35,74,56
9.下列關鍵碼序列中,屬於堆的是(A )。
  A)(15,30,22,93,52,71) 
  B)(15,71,30,22,93,52)
  C)(15,52,22,93,30,71)
  D)(93,30,52,22,15,71)
10.若要求儘可能快地對實數陣列進行穩定的排序,則應選(C )。
   A)快速排序   B)堆排序   C)歸併排序   D)基數排序
11.下列排序演算法的時間複雜度最小的是(D )。
   A)氣泡排序        B)希爾排序
   C)簡單選擇排序    D)歸併排序
12.設有1000個無序的元素,希望用最快的速度挑選出其中前10個最大的元素,最好(C  )排序法。
   A)起泡排序  B)快速排序  C)堆排序  D)基數排序
13.插入排序演算法在每一趟都能選取出一個元素放在其最終的位置上。(B )
   A)正確         B)不正確
14.直接插入排序是不穩定的排序方法。(B  )
   A)正確     B)不正確
15.直接插入排序的最壞情況是初始序列為(B  )序。
   A)正    B)反    C)正和反    D)無
16.在各排序方法中,從未排序序列中挑選元素,並將其依次放入已排序序列(初始時為空)的一端的方法,稱為(D   )。
   A)希爾排序   B)歸併排序   C)插入排序  D)選擇排序
補充習題:第四章
1.棧的特點是( B  )。
  A)先進先出      B)後進先出
  C)進優於出      D)出優於進
2.棧和佇列都是(C )。  
  A)順序儲存的線性結構   B)鏈式儲存的線性結構
  C)操作受限的線性結構   D)操作受限的非線性結構
3.鏈棧與順序棧相比,有一個比較明顯的優點是(B )。
  A)插入操作更加方便    B)通常不會出現棧滿的情況
  C)不會出現棧滿的情況  D)刪除操作更加方便
4.一個棧的入棧序列是a,b,c,d, 則下列序列中不可能的輸出序列是( D )。
  A)acbd       B)dcba
  C)acdb       D)dbac
5.設有一空棧,現有輸入序列為1,2,3,4,5,經過PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH後,輸出序列為(C  )。
  A)5,4,3,2,1   B)2,1   C)2,3   D)2,4 
6.下面哪種資料結構不適合作棧的儲存結構( D )。
  A)陣列   B)單鏈表   C)靜態連結串列   D)二叉樹結構
7.設計一個判別表示式中左右括號是否配對出現的演算法,最好採用( C )結構。
  A)線性表   B)佇列   C)堆疊   D)樹
8.佇列的操作原則是( A  ) 。
  A)先進先出       B)先進後出
  C)只能進行插入   D)只能進行刪除 
5.設有一空棧,現有輸入序列為1,2,3,4,5,經過PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH後,輸出序列為(C  )。
  A)5,4,3,2,1   B)2,1   C)2,3   D)2,4 
6.下面哪種資料結構不適合作棧的儲存結構( D )。
  A)陣列   B)單鏈表   C)靜態連結串列   D)二叉樹結構
7.設計一個判別表示式中左右括號是否配對出現的演算法,最好採用( C )結構。
  A)線性表   B)佇列   C)堆疊   D)樹
8.佇列的操作原則是( A  ) 。
  A)先進先出       B)先進後出
  C)只能進行插入   D)只能進行刪除 
12.判斷當字元序列 x5y 作為字元堆疊的輸入時,輸出長度為3的且可以作為C語言識別符號的個數是( A  )。
   A) 3個     B) 4個     C) 5個     D) 6個 
13.採用不帶尾指標的單鏈表方式表示一個棧,便於結點的插入與刪除。棧頂結點的插入與刪除通常在連結串列的(C )進行。
   A)任意位置      B)連結串列頭尾兩端
   C)連結串列頭一端    D)連結串列尾一端
14.遞迴函式f(n)=f(n-1)十n(n>1)的遞迴出口,比較合理的是(B   )。
   A)f(1)=0   B)f(1)=1   C)f(0)=0    D)f(n)=n 
15.在一個鏈佇列中,若Q.front、Q.rear分別為隊首、隊尾指標,則插入s所指結點的操作為(B   )。
   A) Q.front->next=s; Q.front=s;     
   B) Q.rear->next=s; Q.rear=s;
   C) s->next=Q.front; Q.rear=s;
   D) s->next=Q.front; Q.front=s;
16.若一個棧的輸入序列為1,2,3,…,n,輸出序列的第一個元素是i,則第j個輸出元素是( D  )。
   A) i-j-1   B) i-j   C) j-i+1   D. 不確定的
補充習題:
1.串是一種特殊的線性表,其特殊性體現在(C   ) 。 
  A)可以順序儲存          B)可以用連結串列儲存       
  C)資料元素是一個字元    D)資料元素可以是多個字元
2.串是( D )。 
  A)少於一個字母的序列    B)任意個字母的序列
  C)不少於一個字元的序列  D)有限個字元的序列
3.串的長度是( D )。
  A)串中不同字母的個數  
  B)串中不同字元的個數
  C)串中所含字元的個數,且大於0  
  D)串中所含字元的個數
4.設有兩個串p和q,求q在p中首次出現的位置的運算( B ). 
  A)連線      B)模式匹配
  C)求子串     D)求串長
5.若某串的長度小於一個常數,則採用(C  )儲存方式最為節省空間。
  A)鏈式     B)堆結構      C)順序
6.串中任意多個連續字元組成的子序列稱為該串的子串(A ).
  A)正確         B)不正確
7.如果兩個串含有相同的字符集,則說兩者相等(B  ). 
  A)正確         B)不正確
8.存取陣列中任一元素的時間都是相等的,這種存取方式為(B )存取方式。
  A)順序    B)隨機    C)線性    D)非線性 
9.設一個一維陣列第一個元素的儲存單元的地址是100,每個元素的長度是6,則它的第5個元素的地址是(D )。
  A)130     B)105    C)106    D)124
10.設n階方陣是一個上三角矩陣,則需要儲存的元素個數是(B )。
  A)n2/2   B)n(n+1)/2    C)n   D)n2
11.對一些特殊矩陣採用壓縮儲存的目的主要是為(B )。
  A)表達變得簡單         B)減少不必要的儲存空間的開銷
  C)去掉矩陣中的多餘元素 D)對矩陣元素的存取變得簡單 
12.三元組表不包括( D )。
   A) 行數   B) 列數   C) 元素值   D) 元素總數 
13.設已知一個稀疏矩陣的三元組如下:(1,2,3),(1,6,1), (3,1,5),(3,2,-1),(4,5,4),(5,1,-3),則其轉置矩陣的三元組表中第3個三元組為(A  )。 
   A) (2,1,3)       B) (3,1,5)      
   C) (3,2,-1)      D) (2,3,-1) 
14.若採用三元組壓縮技術儲存稀疏矩陣,只要把每個元素的行下標和列下標互換,就完成了對該矩陣的轉置運算,這種觀點(A )
   A)正確        B)不正確
15.兩維陣列是一種非線性結構。(B  )
   A)正確        B)不正確
16.陣列A三維的長度分別為b3,b2,b1;每個陣列元素佔一個儲存單元;LOC[0,0,0]為基址。若以行序為主序,則元素A[i][j][k]的地址為(A  )(其中0<=i<b3,0<=j<b2,0<=k<b1)
   A)LOC[0,0,0]+i*b2*b1+j*b1+k 
   B)LOC[0,0,0]+i*b3*b2+j*b1+k
   C)LOC[0,0,0]+b3*i+b2*j+k
   D)LOC[0,0,0]+b3*i*j+b2*j+k