1. 程式人生 > 其它 >資料結構>>過程性考核

資料結構>>過程性考核

過程性考核

一、選擇題(15個題,每題2分,共計30分)

1、資料結構DS可以被定義成DS=(D,R),其中D表示( B )的集合,R表示( C )的集合。

A 資料物件 B資料元素 C 關係 D 映像

2、計算機的演算法指的是( B ),它必須具備輸入、輸出和( CD )等五大特性。

A 計算方法 B 解決問題的有限序列

C 可行性、確定性和有窮性 D 可行性、確定性和有窮性

3、順序表中第一個元素的儲存地址是100,每個元素的長度為4,則第5個元素的地址是( C )。

A.110 B.108 C.116 D.120

4、抽象資料型別的三個組成部分分別是( A)

A 資料物件、資料關係和基本操作 B 資料元素、邏輯結構和儲存結構

C 資料項、資料元素和資料型別 D 資料元素、資料結構和資料型別

5、演算法分析的兩個主要方面( A )

A 空間複雜度和時間複雜度 B正確性和簡單性

C 可讀性和文件性 D 資料複雜性和程式複雜性

6、順序儲存結構中的資料元素之間的邏輯關係由( C )來表示的。

A 線性結構 B非線性結構 C 儲存位置 D指標

7、下面程式的時間複雜為( )

for(i=1,s=0; i<=n; i++) {t=1;for(j=1;j<=i;j++) t=t*j;s=s+t;}

(A) O(n) (B) O(n2) (C) O(n3) (D) O(n4)

8、設指標變數p指向單鏈表中結點A,若刪除單鏈表中結點A,則需要修改指標的操作序列為( )。

(A) q=p->next;p->data=q->data;p->next=q->next;free(q);

(B) q=p->next;q->data=p->data;p->next=q->next;free(q);

(C) q=p->next;p->next=q->next;free(q);

(D) q=p->next;p->data=q->data;free(q);

9、有連結串列L,在結點p和結點q之間插入一個結點s的語句是( )

A s->next=q; p=s; B p->next=s ; s=q; C s->next=q; p->next=s; D s=q; p->next=s;

10、帶有頭結點的連結串列L,則判斷連結串列為空的條件是( 沒答案,L->next==NULL )

A L==NULL B L->next=NULL C l->next==NULL D L->next==null

11、用首插法和尾插法建立的連結串列,同樣的輸入順序,在遍歷連結串列的時候,關於連結串列元素的輸出順序說法錯誤的是( )

A兩者輸出的順序一致 B 兩者輸出的順序互為逆序關係 C 首插法輸出的順序與輸入的順序相反 D尾插法輸出的順序和輸入的順序相同

12、在一個長度為n的順序表中,在第i個元素(1in+1)之前插入一個新元素時須向後移動( )個元素。

A n-i B n-i+1 C n-i-1 D i

13、在單鏈表的第i個結點後插入一個新結點(1in)的演算法時間複雜度是( )

A O(1) B O(n) C O(n2) D O(log2n)

14、對於單鏈表表示法,以下說法錯誤的是( )

A資料域用於儲存線性表的一個數據元素

B指標域或鏈域用於存放一個指向本結點的直接後繼結點的指標

C所有資料通過指標的連線而組織成單鏈表

D NULL稱為空指標,它不指向任何結點,只起標誌作用

15、線上性表的下列運算中,不改變資料元素之間結構關係的運算是( )

A 插入 B 刪除 C 排序 D 定位

二、時間複雜度計算(2個題,每題5分,共計10分)

提示:最大語句頻度就是執行次數最多的語句的執行次數

1:答案: n3 O(n3)

2:答案: log2n O(log2n )

三、演算法填空(2個題,每題15分,共計30分)

1、如下演算法完成帶頭結點的單鏈表的初始化。(15分)

void initList(LinkList &L) { //初始化單鏈表

L= (LinkList)malloc(sizeof(Lnode));

if(!L)

exit(0);

L->next=NULL;

}

2、如下演算法完成刪除順序表L中所有元素x。(15分)

void deleteValue(SeqList &L, elemType x)

{

int i,k=0;

for(i = 0; i < L.Length; i++) // 檢測表中所有元素

if( L.elem[i]!=x ) { // 若元素不具有 x 值

if(i!=k) //該元素前移

L.elem[k]=L.elem[i];

k++;

}

L.Length=k;

}

三、演算法設計(2個題,每題15分,共計30分)

1、刪除順序表中的最大值。(15分)

intdeleteMax(SqList&L,ElemType&x)

{

//刪除順序表L中具有最大值的元素。如果刪除成功,則函式返回1並通過引用

//型引數x返回其值,否則函式返回0。

if(L.length==0){

printf("這是空表!\n");

return0;

}

inti,max_i=0;//假定0號元素的值最大

for(i=2;i<=L.length;i++)//迴圈,尋找具有最大值的元素

if(L.elem[i-1]>L.elem[max_i])

max_i=i-1;//max_i記憶當前具最大值元素的位置

x=L.elem[max_i];

L.length--;

L.elem[max_i]=L.elem[L.length];

return1;

}

2、統計連結串列中元素e的個數。(15分)

int count(LinkList L,elemType e)

{

LinkList p=L->next;

int n=0;

while(p)

{

if(p->data==e)

n++;

p=p->next;

}

return n;

}

#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=

本文來自部落格園,作者:凡是過去,皆為序曲,轉載請註明原文連結:https://www.cnblogs.com/longhai3/p/15887671.html

如有疑問,歡迎提問

#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=