熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 數據結構 >> 正文

2013年1月份全國高等教育自學考試數據結構試題

2013-11-15 15:25:24  來源: 數據結構 

  一單項選擇題(本大題共小題每小題在每小題的四個備選答案中選出一個正確答案並將正確答案的序號填在題干的括號內)

  下面程序段的時間復雜度是( )

  for(i=;i

  for(j=1;j

  A[i][j]=0;

  A.O(n) B.O(m+n+1) C.O(m+n) D.O(m*n)

  2.在單鏈表中,指針p指向元素為x的結點,實現“刪除x的後繼”的語句是( )

  A.p=p->next; B.p->next=p->next->next;

  C.p->next=p; D.p=p->next->next;

  3.在頭指針為head且表長大於1的單循環鏈表中,指針p指向表中某個結點,若p->next->next=

  head,則( )

  A.p指向頭結點 B.p指向尾結點

  C.*p的直接後繼是頭結點 D.*P的直接後繼是尾結點

  4.判定“帶頭結點的鏈隊列為空”的條件是( )

  A.Q.front==NULL B.Q.rear==NULL

  C.Q.front==Q.rear D.Q.front!=Q.rear

  5.設有兩個串T和P,求P在T中首次出現的位置的串運算稱作( )

  A.聯接 B.求子串 C.字符定位 D.子串定位

  6.廣義表A=(a,(b),(),(c,d,e))的長度為( )

  A.4 B.5 C.6 D.7

  7.一棵含18個結點的二叉樹的高度至少為( )

  A.3 B.4 C.5 D.6

  8.已知二叉樹的先序序列為ABDECF,中序序列為DBEAFC,則後序序列為( )

  A.DEBAFC B.DEFBCA C.DEBCFA D.DEBFCA

  9.無向圖中一個頂點的度是指圖中( )

  A.通過該頂點的簡單路徑數 B.與該頂點相鄰接的頂點數

  C.通過該頂點的回路數 D.與該頂點連通的頂點數

  10.已知一個圖如下所示,從頂點a出發進行廣度優先遍歷可能得到的序列為( )

  A.a c e f b d

  B.a c b d f e

  C.a c b d e f

  D.a c d b f e

  11.在下列排序方法中,平均時間性能為O(nlogn)且空間性能最好的是( )

  A.快速排序 B.堆排序 C.歸並排序 D.基數排序

  12.已知一組關鍵字為{25,48,36,72,79,82,23,40,16,35},其中每相鄰兩個為有序子序列。tw.WingwIT.CoM對這些子序列進行一趟兩兩歸並的結果是( )

  A.{25,36,48,72,23,40,79,82,16,35}

  B.{25,36,48,72,16,23,40,79,82,35}

  C.{25,36,48,72,16,23,35,40,79,82}

  D.{16,23,25,35,36,40,48,72,79,82}

  13.設順序存儲的線性表共有123個元素,按分塊查找的要求等分成3塊。若對索引表采用順序查找來確定塊,並在確定的塊中進行順序查找,則在查找概率相等的情況下,分塊查找成功時的平均查找長度為( )

  A.21 B.23 C.41 D.62

  14.索引非順序文件的特點是( )

  A.主文件無序,索引表有序 B.主文件有序,索引表無序

  C.主文件有序,索引表有序 D.主文件無序,索引表無序

  15.倒排文件的主要優點是( )

  A.便於進行插入和刪除運算 B.便於進行文件的恢復

  C.便於進行多關鍵字查詢 D.節省存儲空間

  二、填空題 (本大題共10小題,每小題2分,若有兩個空格,每個空格1分,共20分)

  16.抽象數據類型的特點是將____________和____________封裝在一起,從而現實信息隱藏。

  17.從順序表中刪除一個元素時,表中所有在被刪元素之後的元素均需____________一個位置。

  18.在隊列中,允許進行插入操作的一端稱為____________,允許進行刪除操作的一端稱為____________。

  19.如圖兩個棧共享一個向量空間,top1和top分別為指向兩個棧頂元素的指針,則“棧滿”的判定條件是____________。

  

  20.設S1="good",S2=" ",S3="book",則S1,S2和S3依次聯接後的結果是____________。

  21.假設三維數組A[10][9][8]按行優先順序存儲,若每個元素占3個存儲單元,且首地址為100,則元素A[9][8][7]的存儲地址是____________。

  22.已知在一棵含有n個結點的樹中,只有度為k的分支結點和度為0的葉子結點,則該樹中含有的葉子結點的數目為____________。

  23.能夠成功完全拓撲排序的圖一定是一個____________。

  24.如果在排序前,關鍵字序列已接近正序或逆序,則在堆排序和快速排序兩者之中,選用____________較為適當。

  25.假設哈希表的表長為m,哈希函數為H(key),若用線性探查法解決沖突,則探查地址序列的形式表達為____________。

  三、解答題 (本大題共4小題,每小題5分,共20分)

  26.假設通信電文使用的字符集為{a,b,c,d,e,f},名字符在電文中出現的頻度分別為:34,5,12,23,8,18,試為這6個字符設計哈夫曼編碼。請先畫出你所構造的哈夫曼樹(要求樹中左孩子結點的權值小於右孩子結點的權值),然後分別寫出每個字符對應的編碼。

  27.已知一個圖如下所示,其頂點按a、b、c、d、e、f順序存放在鄰接表的頂點表中,請畫出該圖的鄰接表,使得按此鄰接表進行深度優先遍歷時得到的頂點序列為acbefd,進行廣度優先遍歷時得到的頂點序列為acbdfe。

  

  28.已知兩個4×5的稀疏矩陣的三元組表分別如下:

  0 1 4 16 0 1 1 32

  1 2 2 18 1 2 2 - 22

  2 3 4 - 25 2 2 5 69

  3 4 2 28 3 3 4 25

  4 4 2 51

  請畫出這兩個稀疏矩陣之和的三元組表。

  29.從空樹起,依次插入關鍵字40,8,90,15,62,95,12,23,56,32,構造一棵二叉排序樹。

  (1)畫出該二叉排序樹

  (2)畫出刪去該樹中元素值為90的結點之後的二叉排序樹。

  四、算法閱讀題 (本大題共4小題,每小題5分,共20分)

  30.如圖所示,利用同一循環向量空間實現兩個隊列,其類型Queue2定義如下:

  

  typedef struct {

  DataType data[MaxSize];

  int front[2],length[2];

  } Queue2;

  對於 i=0或1,front[i]和length[i]分別為第i個隊列的頭指針和長度域。請在空缺處填入合適的內容,實現第i個循環隊列的入隊操作。

  int EnQueue(Queue2*Q,int i,DataType x)

  {//若第i個隊列不滿,則元素x入隊列,並返回1,否則返回0

  if(i<0||i>1)return 0;

  if( (1) )

  return 0;

  Q->data[ (2) ]=x;

  Q->length[ (3) ]++;

  return 1;

  }

  (1)

  (2)

  (3)

  31.某二叉樹的線索鏈表存儲結構如圖(b)所示,其中p為指向根結點的指針,圖(a)為結點結構。閱讀下列算法,並回答問題:

  (1)寫出執行函數調用f(p)的輸出結果;

  (2)簡述函數f的功能。

  

void f(BinThrTree t)

  {

  while(t)

  {

  printf(t->data);

  if(t->lchild)

  t=t->lchild;

  else

  t=t->rchild;

  }

  }

  (1)

  (2)

  32.下列函數FindCycle(G,i)的功能是,對一個采用鄰接表作存儲結構的有向圖G,利用深度優先搜索策略尋找一條經過頂點v i 的簡單回路。數組cycle_path用於保存搜索過程中形成的回路,cycle_path[k]=j(j≥0)表示在回路中頂點v k 的下一個頂點是v j 。請在空缺處填入合適的內容,使其成為一個完整的算法。

  vertex firstedge

  已知鄰接表的頂點表結點結構為:

  adjvex next

  邊表結點 EdgeNode結構為:

  int cycle_path[MaxNum];

  int FindCycle(ALGraph*G,int i)

  {//若回路存在,則返回1,否則返回0

  int j;

  for(j=0;jn;j++)cycle_path[j]=-1;

  return DFSPath(G,i,i);

  }

  int DFSPath(ALGraph*G,int j,int i)

  {

  EdgeNode *p;

  int cycled=0;

  for(p=G->adjlist[j].firstedge;p&&!cycled;p=p->next)

  {

  cycle_path[j]=p->adjvex;

  if( (1 ) )cycled=1;//已找到回路

  else

  if(cycle_path[p->adjvex]==-1)cycled= (2) ;

  }

  return (3)

  }

  (1)

  (2)

  (3)

  33.閱讀下列函數algo,並回答問題。

  (1)假設整型數組A[1..8]中的元素依次為(3,8,9,1,7,4,2,6)。執行函數調用algo(A,8)時,外層while的循環體執行多少次?函數的返回值是多少?

  (2)簡述函數algo(L,n)的功能。

  int algo(int L[],intn)

  {

  int i=0,j,s=1,t=n;

  while (i!=(n+1)/2)

  {

  int x=L[s];

  i=s;j=t;

  while(i


From:http://tw.wingwit.com/Article/program/sjjg/201311/23385.html

    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.