第一篇:數(shù)據(jù)結(jié)構(gòu)期中試卷及答案
一、選擇題(每小題2分,共30分)1.數(shù)據(jù)結(jié)構(gòu)是(D)。
A.一種數(shù)據(jù)類型 B.?dāng)?shù)據(jù)的存儲(chǔ)結(jié)構(gòu) C.一組性質(zhì)相同的數(shù)據(jù)元素的集合
D.相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合
2.以下與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)無關(guān)的術(shù)語(yǔ)是(D)。
A.鏈隊(duì)列 B.鏈表 C.順序表 D.棧
3.以下數(shù)據(jù)結(jié)構(gòu)中,(A)是非線性數(shù)據(jù)結(jié)構(gòu)
A.樹 B.字符串 C.隊(duì) D.棧
4.一個(gè)順序存儲(chǔ)線性表的第一個(gè)元素的存儲(chǔ)地址是90,每個(gè)元素的長(zhǎng)度是2,則第6個(gè)元素的存儲(chǔ)地址是(B)。
A.98 B.100 C.102 D.106
5.在線性表的下列運(yùn)算中,不改變數(shù)據(jù)元素之間結(jié)構(gòu)關(guān)系的運(yùn)算是(D)。A.插入 B.刪除 C.排序 D.查找
6.線性表采用鏈?zhǔn)酱鎯?chǔ)時(shí),其地址(D)。
A.必須是連續(xù)的 B.一定是不連續(xù)的 C.部分地址必須連續(xù) D.連續(xù)與否均可以
7.線性表是(A)。
A.一個(gè)有限序列,可以為空 B.一個(gè)有限序列,不可以為空 C.一個(gè)無限序列,可以為空 D.一個(gè)無限序列,不可以為空
8.若進(jìn)棧序列為1,2,3,4,5,6,且進(jìn)棧和出??梢源┎暹M(jìn)行,則可能出現(xiàn)的出棧序列為(B)。
A.3,2,6,1,4,5 B.3,4,2,1,6,5 C.1,2,5,3,4,6 D.5,6,4,2,3,1
9.若一個(gè)棧的輸人序列是1,2,3,…,n,輸出序列的第一個(gè)元素是n,則第k個(gè)輸出元素是(C)。
A.k B.n-k-1 C.n-k+1 D.不確定
10.對(duì)于隊(duì)列操作數(shù)據(jù)的原則是(A)。
A.先進(jìn)先出 B.后進(jìn)先出 C.先進(jìn)后出 D.不分順序 11.棧和隊(duì)列的共同點(diǎn)是(C)。
A.都是先進(jìn)先出 B.都是先進(jìn)后出 C.只允許在端點(diǎn)處插入和刪除元素 D.沒有共同點(diǎn)
12.在一個(gè)鏈隊(duì)列中,假定front和rear分別為頭指針和尾指針,刪除一個(gè)結(jié)點(diǎn)的操作是(A)。
A.front=front->next B.rear=rear->next C.rear->next=front D.front->next=rear
13.空串與空格串(B)。
A.相同 B.不相同 C.可能相同 D.無法確定
14.串與普通的線性表相比較,它的特殊性體現(xiàn)在(C)。A.順序的存儲(chǔ)結(jié)構(gòu) B.鏈接的存儲(chǔ)結(jié)構(gòu) C.?dāng)?shù)據(jù)元素是一個(gè)字符 D.?dāng)?shù)據(jù)元素可以任意
15.串的長(zhǎng)度是指(B)。
A.串中所含不同字母的個(gè)數(shù) B.串中所含字符的個(gè)數(shù)
C.串中所含不同字符的個(gè)數(shù) D.串中所含非空格字符的個(gè)數(shù)
二、填空題(每空2分,共20分)
1. 線性表、棧和隊(duì)列,串都是__線性_____結(jié)構(gòu)。2. 數(shù)據(jù)的基本單位是__數(shù)據(jù)元素_______________。
3. 當(dāng)線性表的元素總數(shù)基本穩(wěn)定,且很少進(jìn)行插入和刪除操作,但要求以最快的速度存取線性表中的元素時(shí),應(yīng)采用_順序______存儲(chǔ)結(jié)構(gòu)。4. 已知具有n個(gè)元素的一維數(shù)組采用順序存儲(chǔ)結(jié)構(gòu),每個(gè)元素占k個(gè)存儲(chǔ)單元,第一個(gè)元素的地址為L(zhǎng)oc(a1),那么,第i個(gè)元素的存儲(chǔ)地址Loc(ai)= Loc(a1)+(i-1)*k。5. 棧(stack)是限定在表尾進(jìn)行插人或刪除操作的線性表。在棧中,允許插人和刪除操作的一端稱為__棧頂________,而另一端稱為_棧底________。6. 一個(gè)循環(huán)隊(duì)列Q中,頭指針和尾指針分別為Q.front和Q.rear,且最大隊(duì)列長(zhǎng)度為MaxQSize,則判斷隊(duì)空的條件為 Q.rear==Q.front,判斷隊(duì)滿的條件為(Q.rear+1)%MaxQSize==Q.front。隊(duì)列的長(zhǎng)度為(.rear-Q.front+MaxQSize)%MaxQSize
7. 兩個(gè)串相等的充分必要條件是 兩個(gè)串的長(zhǎng)度相等,且各個(gè)對(duì)應(yīng)位置的字符都相等。
三、程序填空題(每空3分,共30分)
1.在帶頭結(jié)點(diǎn)的單鏈表L中第i個(gè)數(shù)據(jù)元素之前插入數(shù)據(jù)元素e的C語(yǔ)言描述算法如下,其中L為鏈表頭結(jié)點(diǎn)指針。請(qǐng)?zhí)畛渌惴ㄖ袠?biāo)出的空白處,完成其功能。
typedef struct node {int data;
struct node *next;
}linknode,*link;
int ListInsert_L(link &L, int i, int e){ Linknode *p;int j; p = L; j = 0;
while(p && j < i-1){ p=p->next ; ++j; } // 尋找第i-1個(gè)結(jié)點(diǎn) if(!p || j > i-1)return 0;
s=(link)malloc(sizeof(linknode));// 生成新結(jié)點(diǎn)s s->data = e;
s->next=p->next ; p->next = s; // 插入L中 return 1; }
2.對(duì)順序棧的C語(yǔ)言描述算法如下,其中top為棧頂指針,請(qǐng)?zhí)畛渌惴ㄖ袠?biāo)出的空白處,插入元素e為新的棧頂元素。
#define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef struct{ char *base;char *top;int stacksize;}SqStack;
int Push(SqStack &S, char e){ //
if((s.top-s.base)>=s.stacksize)//棧滿,追加存儲(chǔ)空間 { S.base=(SElemType *)realloc(S.base,S.stacksize+STACKINCREMENT)*sizeof(SElemType)); if(!S.base)return 0;
S.top = s.base+s.stacksize ; //修改棧頂指針 S.stacksize += STACKINCREMENT; } *s.top++=e ;//插入元素 return 1; }
3.對(duì)鏈隊(duì)列的C語(yǔ)言描述算法如下,請(qǐng)?zhí)畛渌惴ㄖ袠?biāo)出的空白處,刪除隊(duì)列Q 的隊(duì)頭元素并用e返回其值。typedef struct QNode{ QElemType data; struct QNode *next; }QNode, *QueuePtr;
typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue;
int DeQueue(LinkQueue &Q, QElemType &e){ Linknode *p;
if(Q.front==Q.rear)retrun 0;//隊(duì)列空,返回 p = Q.front-> next; e = p->data;
Q.front-> next=p->next;//修改指針
if(Q.rear==p)Q.rear= Q.front ; //隊(duì)列只有一個(gè)元素的情況 free(p);//釋放結(jié)點(diǎn)空間 return 1; }
三、算法設(shè)計(jì)與分析題(每題10分,共20分)
1、簡(jiǎn)述下列算法實(shí)現(xiàn)的功能:(每題5分,共10分)(1)typedef struct LNode{
Char data;
struct LNode *next;}LNode,*LinkList;LinkList Demo(LinkList &L){ // L 是無頭結(jié)點(diǎn)單鏈表 LNode *Q,*P;if(L&&L->next){
Q=L;L=L->next;P=L;while(P->next)P=P->next;
P->next=Q;Q->next=NULL;
} return L;}// Demo 答:將單鏈表的第一個(gè)結(jié)點(diǎn)刪除,放到鏈尾。
———————————————————————————————————————————————————
(2)#define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef struct{ int *base;int *top;int stacksize;
} Stack;void Demo1(Stack &S, int m){ Stack T;int i;
InitStack(T);//初始化棧
while(!StackEmpty(S))//判斷棧是否為空
if((i=Pop(S))!=m)Push(T,i);//入棧操作
while(!StackEmpty(T))
{
i=Pop(T);//出棧操作
Push(S,i);
}
} 答:刪除棧S中所有值為m的數(shù)據(jù)元素
2.有一個(gè)帶頭結(jié)點(diǎn)的單鏈表,頭指針為head,編寫一個(gè)算法計(jì)算所有數(shù)據(jù)域?yàn)閄的結(jié)點(diǎn)的個(gè)數(shù)(不包括頭結(jié)點(diǎn))。typedef struct node {int data;struct node *next;}linknode,*link;int sample(link head, int X){ int count=0;link p=head->next;while(p){if(p->data==X)count++;p=p->next;} return count;}
第二篇:數(shù)據(jù)結(jié)構(gòu)期中考試試卷答案
2014-2015學(xué)第一學(xué)期《數(shù)據(jù)結(jié)構(gòu)》
期中考試試卷
一、選擇題(每題2分,共20分)
1.計(jì)算機(jī)內(nèi)部數(shù)據(jù)處理的基本單位是(B)。
A.數(shù)據(jù) B.數(shù)據(jù)元素
C.數(shù)據(jù)項(xiàng)
D.數(shù)據(jù)庫(kù) 2.設(shè)語(yǔ)句x++的時(shí)間是單位時(shí)間,則以下語(yǔ)句的時(shí)間復(fù)雜度為(B)。
for(i=1;i<=n;i++)for(j=i;j<=n;j++)x++;A.O(1)B.O(n)C.O(n)
D.O(n)
33.在一個(gè)長(zhǎng)度為n的順序表中刪除第i個(gè)元素(0<=i<=n)時(shí),需向前移動(dòng)(A)個(gè)元素。
A.n-i B.n-i+l C.n-i-1 D.i 4.在一個(gè)單鏈表中,已知q結(jié)點(diǎn)是p結(jié)點(diǎn)的前趨結(jié)點(diǎn),若在q和p之間插入s結(jié)點(diǎn),則須執(zhí)行(B)。
A.s->next=p->next;p->next=s B.q->next=s;s->next=p C.p->next=s->next;s->next=p D.p->next=s;s->next=q 5.在一個(gè)具有n個(gè)單元的順序棧中,假定以地址低端(即0單元)作為棧底,以top作為棧頂指針,當(dāng)做出棧處理時(shí),top變化為______。C A.top不變
B.top=0 C.top--D.top++ 6.在具有n個(gè)單元的順序存儲(chǔ)的循環(huán)隊(duì)列中,假定front和rear分別為隊(duì)頭指針和隊(duì)尾指針,則判斷隊(duì)滿的條件為________。D A.rear%n= = front B.(front+l)%n= = rear C.rear%n-1= = front D.(rear+l)%n= = front 7.兩個(gè)字符串相等的條件是(D)。
A.兩串的長(zhǎng)度相等 B.兩串的長(zhǎng)度相等,并且兩串包含的字符相同 C.兩串包含的字符相同 D.兩串的長(zhǎng)度相等,并且對(duì)應(yīng)位置上的字符相同
8.數(shù)組A中,每個(gè)元素的長(zhǎng)度為3個(gè)字節(jié),行下標(biāo)i從1到8,列下標(biāo)j從1到10,從首地址SA開始連續(xù)存放在存儲(chǔ)器內(nèi),該數(shù)組按行存放時(shí),元素A[8][5]的起始地址為(C)。A.SA+141 B.SA+144 C.SA+222 D.SA+225 9.設(shè)有廣義表D=(a,b,D),其長(zhǎng)度為(B),深度為(A)。A.無窮大 B.3
C.2 D.5 10.假設(shè)在一棵二叉樹中,雙分支結(jié)點(diǎn)數(shù)為15,單分支結(jié)點(diǎn)數(shù)為30個(gè),則葉子結(jié)點(diǎn)數(shù)為(B)個(gè)。
A.15
B.16
C.17
D.47
二、填空題(每空1分,共20分)
1.數(shù)據(jù)的邏輯結(jié)構(gòu)有四種基本形態(tài),分別是________________、__________________、__________________和__________________。2.集合,線性,樹,圖
2.一個(gè)算法的效率可分為__________________效率和__________________效率。4.時(shí)間,空間
3.當(dāng)對(duì)一個(gè)線性表經(jīng)常進(jìn)行存取操作,而很少進(jìn)行插入和刪除操作時(shí),則采用_______存儲(chǔ)結(jié)構(gòu)為宜。相反,當(dāng)經(jīng)常進(jìn)行的是插入和刪除操作時(shí),則采用_______存儲(chǔ)結(jié)構(gòu)為宜。7.順
(第1頁(yè),共3頁(yè))
序,鏈接
4.對(duì)于一個(gè)具有n個(gè)結(jié)點(diǎn)的單鏈表,在已知的結(jié)點(diǎn)p后插入一個(gè)新結(jié)點(diǎn)的時(shí)間復(fù)雜度為______,在給定值為x的結(jié)點(diǎn)后插入一個(gè)新結(jié)點(diǎn)的時(shí)間復(fù)雜度為_______。12.O(1),O(n)5.可以在線性表的______位置插入和刪除元素;對(duì)于棧只能在_______位置刪除元素;對(duì)于隊(duì)列只能在_______位置插入元素。9任何,棧頂,隊(duì)尾 6.設(shè)字符串S1= “ABCDEF”,S2= “PQRS”,則運(yùn)算S=CONCAT(SUB(S1,2,LEN(S2)),SUB(S1,LEN(S2),2))后的串值為___________________。3.“BCDEDE”
7.一維數(shù)組的邏輯結(jié)構(gòu)是______________,存儲(chǔ)結(jié)構(gòu)是______________;對(duì)于二維或多維數(shù)組,分為______________和______________兩種不同的存儲(chǔ)方式。1.線性結(jié)構(gòu),順序結(jié)構(gòu),以行為主序,以列為主序
8.三維數(shù)組R[c1?d1,c2?d2,c3?d3]共含有______________個(gè)元素。(其中:c1≤d1,c2≤d2,c3≤d3)9.(d1-c1+1)×(d2-c2+1)×(d3-c3+1)
9.數(shù)組A[1?10,-2?6,2?8]以行優(yōu)先的順序存儲(chǔ),設(shè)第一個(gè)元素的首地址是100,每個(gè)元素占3個(gè)存儲(chǔ)長(zhǎng)度的存儲(chǔ)空間,則元素A[5,0,7]的存儲(chǔ)地址為______________。10.913
三、簡(jiǎn)答題(每題6分,共18分)1.已知L是無表頭結(jié)點(diǎn)的單鏈表,且P結(jié)點(diǎn)既不是首元結(jié)點(diǎn)也不是尾元結(jié)點(diǎn),試寫出合適的語(yǔ)句序列。(1)在P結(jié)點(diǎn)后插入S結(jié)點(diǎn)。(2)在表首插入S結(jié)點(diǎn)。(3)在表尾插入S結(jié)點(diǎn)。2已知L是帶表頭結(jié)點(diǎn)的非空單鏈表,且P結(jié)點(diǎn)既不是首元結(jié)點(diǎn)也不是尾元結(jié)點(diǎn),試寫出合適的語(yǔ)句序列。(1)刪除P結(jié)點(diǎn)的直接后繼結(jié)點(diǎn)。(2)刪除P結(jié)點(diǎn)。(3)刪除尾元結(jié)點(diǎn)。3. LinkList mynote(LinkList L){//L是不帶頭結(jié)點(diǎn)的單鏈表的頭指針 if(L&&L->next){ q=L;L=L->next;p=L;
S1: while(p->next)p=p->next; S2: p->next=q;q->next=NULL;
} return L; } 請(qǐng)回答下列問題:(1)說明語(yǔ)句S1的功能;(2)說明語(yǔ)句組S2的功能;(3)設(shè)鏈表表示的線性表為(a1,a2, ?,an),寫出算法執(zhí)行后的返回值所表示的線性表。
該算法的功能是:將開始結(jié)點(diǎn)摘下鏈接到終端結(jié)點(diǎn)之后成為新的終端結(jié)點(diǎn),而原來的第二個(gè)結(jié)點(diǎn)成為新的開始結(jié)點(diǎn),返回新鏈表的頭指針。
四、算法設(shè)計(jì)題(每題14分,共42分)1.假設(shè)有一個(gè)循環(huán)鏈表的長(zhǎng)度大于1,且表中既無頭結(jié)點(diǎn)也無頭指針,已知p為指向鏈表中某結(jié)點(diǎn)的指針,設(shè)計(jì)在鏈表中刪除p所指結(jié)點(diǎn)的前趨結(jié)點(diǎn)的算法。
解:可引入一個(gè)指針q,當(dāng)q->next=p時(shí),說明此時(shí)q所指的結(jié)點(diǎn)為p所指結(jié)點(diǎn)的前趨結(jié)點(diǎn),從而可得算法如下:
void delete(LinkList *p){ //在鏈表中刪除p所指結(jié)點(diǎn)的前趨結(jié)點(diǎn) LinkList *q,*t;
q=p;
while(q->next->next!=p)//q->next不是p的前趨結(jié)點(diǎn)
(第2頁(yè),共3頁(yè))
q=q->next;
t=q->next;//t指向要?jiǎng)h除結(jié)點(diǎn)
q->next=p;//刪除t結(jié)點(diǎn)
free(t);}
2.已知線性表的元素是無序的,且以帶頭結(jié)點(diǎn)的單鏈表作為存儲(chǔ)結(jié)構(gòu)。設(shè)計(jì)一個(gè)刪除表中所有值小于max但大于min的元素的算法。
2.算法描述如下:
delete(LinkList *head, int max, int min){ LinkList *p,*q;
q=head;
p=head->next;
while(p!=NULL)
if((p->data<=min)||(p->data>=max))
{ q=p;
p=p->next;
} else { q->next=p->next;free(p);p=q->next;} }
3.假設(shè)表達(dá)式有單字母變量和雙目四則運(yùn)算符構(gòu)成。試寫一個(gè)算法,對(duì)一個(gè)通常書寫形式且書寫正確的表達(dá)式求值。
(第3頁(yè),共3頁(yè))
第三篇:數(shù)據(jù)結(jié)構(gòu)試卷(一)及答案
數(shù)據(jù)結(jié)構(gòu)試卷
(一)一、選擇題(20分)
1.組成數(shù)據(jù)的基本單位是()。
(A)數(shù)據(jù)項(xiàng)(B)數(shù)據(jù)類型(C)數(shù)據(jù)元素(D)數(shù)據(jù)變量
2.設(shè)數(shù)據(jù)結(jié)構(gòu)A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},則數(shù)據(jù)結(jié)構(gòu)A是()。
(A)線性結(jié)構(gòu)(B)樹型結(jié)構(gòu)(C)圖型結(jié)構(gòu)(D)集合 3.?dāng)?shù)組的邏輯結(jié)構(gòu)不同于下列()的邏輯結(jié)構(gòu)。
(A)線性表(B)棧(C)隊(duì)列(D)樹 4.二叉樹中第i(i≥1)層上的結(jié)點(diǎn)數(shù)最多有()個(gè)。
ii-1(A)2i(B)2(C)2(D)2i-1 5.設(shè)指針變量p指向單鏈表結(jié)點(diǎn)A,則刪除結(jié)點(diǎn)A的后繼結(jié)點(diǎn)B需要的操作為()。
(A)p->next=p->next->next(B)p=p->next
(C)p=p->next->next(D)p->next=p 6.設(shè)棧S和隊(duì)列Q的初始狀態(tài)為空,元素E1、E2、E3、E4、E5和E6依次通過棧S,一個(gè)元素出棧后即進(jìn)入隊(duì)列Q,若6個(gè)元素出列的順序?yàn)镋2、E4、E3、E6、E5和E1,則棧S的容量至少應(yīng)該是()。
(A)6(B)4(C)3(D)2 7.將10階對(duì)稱矩陣壓縮存儲(chǔ)到一維數(shù)組A中,則數(shù)組A的長(zhǎng)度最少為()。
(A)100(B)40(C)55(D)80 8.設(shè)結(jié)點(diǎn)A有3個(gè)兄弟結(jié)點(diǎn)且結(jié)點(diǎn)B為結(jié)點(diǎn)A的雙親結(jié)點(diǎn),則結(jié)點(diǎn)B的度數(shù)數(shù)為()。
(A)3(B)4(C)5(D)1 9.根據(jù)二叉樹的定義可知二叉樹共有()種不同的形態(tài)。
(A)4(B)5(C)6(D)7 10.設(shè)有以下四種排序方法,則()的空間復(fù)雜度最大。
(A)冒泡排序(B)快速排序(C)堆排序(D)希爾排序
二、填空題(30分)1.設(shè)順序循環(huán)隊(duì)列Q[0:m-1]的隊(duì)頭指針和隊(duì)尾指針分別為F和R,其中隊(duì)頭指針F指向當(dāng)前隊(duì)頭元素的前一個(gè)位置,隊(duì)尾指針R指向當(dāng)前隊(duì)尾元素所在的位置,則出隊(duì)列的語(yǔ)句為F =____________。
2.設(shè)線性表中有n個(gè)數(shù)據(jù)元素,則在順序存儲(chǔ)結(jié)構(gòu)上實(shí)現(xiàn)順序查找的平均時(shí)間復(fù)雜度為___________,在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)上實(shí)現(xiàn)順序查找的平均時(shí)間復(fù)雜度為___________。3.設(shè)一棵二叉樹中有n個(gè)結(jié)點(diǎn),則當(dāng)用二叉鏈表作為其存儲(chǔ)結(jié)構(gòu)時(shí),該二叉鏈表中共有________個(gè)指針域,__________個(gè)空指針域。
4.設(shè)指針變量p指向單鏈表中結(jié)點(diǎn)A,指針變量s指向被插入的結(jié)點(diǎn)B,則在結(jié)點(diǎn)A的后面插入結(jié)點(diǎn)B的操作序列為______________________________________。
5.設(shè)無向圖G中有n個(gè)頂點(diǎn)和e條邊,則其對(duì)應(yīng)的鄰接表中有_________個(gè)表頭結(jié)點(diǎn)和_________個(gè)表結(jié)點(diǎn)。
6.設(shè)無向圖G中有n個(gè)頂點(diǎn)e條邊,所有頂點(diǎn)的度數(shù)之和為m,則e和m有______關(guān)系。7.設(shè)一棵二叉樹的前序遍歷序列和中序遍歷序列均為ABC,則該二叉樹的后序遍歷序列為__________。
8.設(shè)一棵完全二叉樹中有21個(gè)結(jié)點(diǎn),如果按照從上到下、從左到右的順序從1開始順序編號(hào),則編號(hào)為8的雙親結(jié)點(diǎn)的編號(hào)是___________,編號(hào)為8的左孩子結(jié)點(diǎn)的編號(hào)是_____________。
9.下列程序段的功能實(shí)現(xiàn)子串t在主串s中位置的算法,要求在下劃線處填上正確語(yǔ)句。
int index(char s[ ], char t[ ]){ i=j=0;while(i 三、應(yīng)用題(30分) 1.設(shè)完全二叉樹的順序存儲(chǔ)結(jié)構(gòu)中存儲(chǔ)數(shù)據(jù)ABCDE,要求給出該二叉樹的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)并給出該二叉樹的前序、中序和后序遍歷序列。 2.設(shè)給定一個(gè)權(quán)值集合W=(3,5,7,9,11),要求根據(jù)給定的權(quán)值集合構(gòu)造一棵哈夫曼樹并計(jì)算哈夫曼樹的帶權(quán)路徑長(zhǎng)度WPL。 3.設(shè)一組初始記錄關(guān)鍵字序列為(19,21,16,5,18,23),要求給出以19為基準(zhǔn)的一趟快速排序結(jié)果以及第2趟直接選擇排序后的結(jié)果。 4.設(shè)一組初始記錄關(guān)鍵字集合為(25,10,8,27,32,68),散列表的長(zhǎng)度為8,散列函數(shù)H(k)=k mod 7,要求分別用線性探測(cè)和鏈地址法作為解決沖突的方法設(shè)計(jì)哈希表。5.設(shè)無向圖G(所右圖所示),要求給出該圖的深度優(yōu)先和廣度優(yōu)先遍歷的序列并給出該圖的最小生成樹。 四、算法設(shè)計(jì)題(20分)1.設(shè)計(jì)判斷單鏈表中結(jié)點(diǎn)是否關(guān)于中心對(duì)稱算法。2.設(shè)計(jì)在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)上建立一棵二叉樹的算法。3.設(shè)計(jì)判斷一棵二叉樹是否是二叉排序樹的算法。 數(shù)據(jù)結(jié)構(gòu)試卷 (一)參考答案 一、選擇題 1.C 2.C 3.D 4.C 5.A 6.C 7.C 8.B 9.B 10.B 二、填空題 1.(F+1)% m 2.O(n),O(n)3.2n,n+1 4.s->next=p->next;s->next=s 5.n, 2e 6.m=2e 7.CBA 8.4,16 9.i-j+1,0 10.n-1 三、應(yīng)用題 1.鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)略,前序ABDEC,中序DBEAC,后序DEBCA。2.哈夫曼樹略,WPL=78 3.(18,5,16,19,21,23),(5,16,21,19,18,23) h0h1??8h2012345674.線性探測(cè): 鏈地址法:h3??10 ?8?1025322768h4??25??32h5??68h6??275.深度:125364,廣度:123456,最小生成樹T的邊集為E={(1,4),(1,3),(3,5),(5,6),(5,6)} 四、算法設(shè)計(jì)題 1.設(shè)計(jì)判斷單鏈表中結(jié)點(diǎn)是否關(guān)于中心對(duì)稱算法。 typedef struct {int s[100];int top;} sqstack;int lklistsymmetry(lklist *head){ sqstack stack;stack.top=-1;lklist *p; for(p=head;p!=0;p=p->next){stack.top++;stack.s[stack.top]=p->data;} for(p=head;p!=0;p=p->next)if(p->data==stack.s[stack.top])stack.top=stack.top-1;else return(0); return(1);} 2.設(shè)計(jì)在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)上建立一棵二叉樹的算法。 typedef char datatype;typedef struct node {datatype data;struct node *lchild,*rchild;} bitree;void createbitree(bitree *&bt){ char ch;scanf(“%c”,&ch); if(ch=='#'){bt=0;return;} bt=(bitree*)malloc(sizeof(bitree));bt->data=ch;createbitree(bt->lchild);createbitree(bt->rchild);} 3.設(shè)計(jì)判斷一棵二叉樹是否是二叉排序樹的算法。 int minnum=-32768,flag=1;typedef struct node{int key;struct node *lchild,*rchild;}bitree;void inorder(bitree *bt){ if(bt!=0) {inorder(bt->lchild);if(minnum>bt->key)flag=0;minnum=bt->key;inorder(bt->rchild);} } 廣東海洋大學(xué) 2013 —— 2014 學(xué)年第 1 學(xué)期 《數(shù)據(jù)結(jié)構(gòu)與算法》課程試題 一、選擇題(6小題,每題3分) 1.若某線性表中最常用的操作是取第i個(gè)元素和找第i個(gè)元素的前驅(qū),則采用(A)存儲(chǔ)方法最節(jié)省時(shí)間 A 順序表 B單鏈表 C 雙鏈表 D單循環(huán)鏈表 2.一個(gè)棧的入棧序列是1,2,3,4,5,則不可能的出棧序列是(C)A 5,4,3,2,1 B 4,5,3,2,1 C 4,3,5,1,2 D 1,2,3,4,5 3.深度為k的完全二叉樹至多有(C)個(gè)結(jié)點(diǎn) A 2k?2? 1B 2k?1 C D 2k?1?1 k4.G是一個(gè)非連通無向圖,共28條邊,則該圖至少有(D)個(gè)頂點(diǎn)2A 6 B 7 C 8 D 9 ?1 5.在平衡二叉樹中插入一個(gè)結(jié)點(diǎn)后造成不平衡,設(shè)最低的不平衡結(jié)點(diǎn)為A,并已知A的左孩子平衡因子為0,右孩子平衡因子為1,則應(yīng)該做(C)型調(diào)整以使其平衡 A LL B LR C RL D RR 6.下述排序方法中,時(shí)間性能和待排序記錄的初始狀態(tài)無關(guān)的是(C)A 插入排序和快速排序 B 歸并排序和快速排序 C 選擇排序和歸并排序 D 插入排序和歸并排序 二、填空題 1.數(shù)組Q[n]用來表示一個(gè)循環(huán)隊(duì)列,front為隊(duì)頭元素的前一個(gè)位置,rear為隊(duì)尾元素位置,計(jì)算隊(duì)列中元素個(gè)數(shù)的公式為______(rear-front+n)%n______________。 2.已知一棵度為3的樹有2個(gè)度為1的結(jié)點(diǎn),3個(gè)度為2的結(jié)點(diǎn),4個(gè)度為3的結(jié)點(diǎn)。則該樹中有__12_________個(gè)葉子結(jié)點(diǎn)。 3.已知無向圖的頂點(diǎn)數(shù)為n,邊數(shù)為e,其鄰接表表示的空間復(fù)雜度為____________O(n+e)____。4.假定一個(gè)數(shù)列{25,43,62,31,48,56},采用散列函數(shù)為H(k)=k mod 7,則元素48的同義詞是____62_______。5.利用簡(jiǎn)單選擇排序?qū)個(gè)記錄進(jìn)行排序,最壞情況下,記錄交換次數(shù)為_____n-1_______。 三、(15分)已知一棵二叉樹的中序遍歷序列為DBKEHJAFCIG,后序遍歷序列為DKJHEBFIGCA,試畫出該二叉樹并給出其前序遍歷序列 四、(15分)設(shè)用于通信的電文由字符集{a,b,c,d,e,f,g,h}中的字母構(gòu)成,它們?cè)陔娢闹谐霈F(xiàn)的頻度分別為{0.02,0.30,0.08,0.14,0.17,0.11,0.12, 0.06},回答下面問題:(1)為這八個(gè)字符設(shè)計(jì)哈夫曼編碼(2)對(duì)這八個(gè)字符進(jìn)行等長(zhǎng)編碼需要幾位二進(jìn)制數(shù),哈夫曼編碼比等長(zhǎng)編碼電文總長(zhǎng)壓縮多少? 五、(20分)已知一個(gè)長(zhǎng)度為11的線性表List=(12, 24, 36, 90, 52, 30, 41, 8, 10, 38, 61),試回答下面問題(1)將線性表元素依次插入一個(gè)空的平衡二叉樹,畫出所得平衡二叉樹,如果假設(shè)每個(gè)元素查找概率相同,則平均查找長(zhǎng)度為多少? (2)如果對(duì)線性表元素排序后進(jìn)行折半查找,畫出折半查找判定樹,假設(shè)每個(gè)元素查找概率相同,計(jì)算平均查找長(zhǎng)度。 六、(12分)已知數(shù)據(jù)序列為(11,4,8,19,6,31,23),寫出快速排序及堆排序每一趟的結(jié)果 解: 七、(11分)設(shè)單鏈表以非遞減有序排列,設(shè)計(jì)算法實(shí)現(xiàn)在單鏈表中刪除值相同的多余結(jié)點(diǎn)。 社會(huì)保障學(xué) 一、選擇題 1、社會(huì)保障體系是(B)各項(xiàng)制度的總和。 A.社會(huì)保險(xiǎn)B.社會(huì)保障C.社會(huì)救助D.社會(huì)優(yōu)撫 2、社會(huì)救助是(A)社會(huì)保障。 A.最低B.基本C.特殊D.最高 3、在社會(huì)救助方面,(C)年6月1日,上海市正式實(shí)施最低生活保障制度,標(biāo)志著我國(guó)最低生活保障制度正式建立。 A.1986B.1997C.1993D.20074、社會(huì)保障體系是由社會(huì)保障立法、(ABCDE)、社會(huì)保障管理等制度組成。 A.社會(huì)保障基金B(yǎng).社會(huì)保險(xiǎn)C.社會(huì)救D.社會(huì)福利E.社會(huì)優(yōu)撫 5、社會(huì)保險(xiǎn)包括:(ABCDE) A.養(yǎng)老保險(xiǎn)B.醫(yī)療保險(xiǎn)C.失業(yè)保險(xiǎn)D.工傷保險(xiǎn)E.生育保險(xiǎn) 6、(A)是指對(duì)資源的有效利用,以最小的投入獲得最大的產(chǎn)出。 A.效率B.公平C.合理D.平等 7、社會(huì)福利的原則是普遍性和(C)相結(jié)合的原則。 A.靈活性B.強(qiáng)制性C.選擇性D.特殊性 8、社會(huì)救助的原則包括:(ABCD) A.選擇性原則B.人道主義原則C.受助權(quán)力原則D.最低生活原則E.勵(lì)軍榮軍的原則 9、社會(huì)保險(xiǎn)的原則是(AC)。 A.權(quán)力和義務(wù)相結(jié)合原則B.普遍性原則C.統(tǒng)籌互濟(jì)原則D.逆向分配原則E.靈活性原則 10、按照國(guó)家規(guī)定,企業(yè)職工社會(huì)保險(xiǎn)基金結(jié)余額除預(yù)留相當(dāng)于兩個(gè)月的支付費(fèi)用外,應(yīng)全部購(gòu)買(D)和轉(zhuǎn)存為銀行定期存款。 A.股票B.福利彩票C.企業(yè)債券D.國(guó)債E.期貨 11、社會(huì)保障基金監(jiān)管的組織體制主要包括(ABC) A.政府監(jiān)管B.內(nèi)部監(jiān)管C.社會(huì)監(jiān)管D.企業(yè)監(jiān)管E.外部監(jiān)管 12、養(yǎng)老保險(xiǎn)水平是指退休后所能拿到()的多少。(C) A.工資B.獎(jiǎng)金C.養(yǎng)老金D.補(bǔ)助金E.津貼 13、養(yǎng)老保險(xiǎn)的意義有(ABCD) A.養(yǎng)老保險(xiǎn)制度使老年人的養(yǎng)老更加有保障B.養(yǎng)老保險(xiǎn)制度使社會(huì)更加安定 C.養(yǎng)老保險(xiǎn)的巨額資金儲(chǔ)蓄,一方面可以調(diào)節(jié)市場(chǎng)消費(fèi),另一方面支援國(guó)家經(jīng)濟(jì)建設(shè) D.養(yǎng)老保險(xiǎn)使得家庭養(yǎng)老的重要性下降E.養(yǎng)老保險(xiǎn)承諾與兌現(xiàn)之間的時(shí)間最長(zhǎng) 14、醫(yī)療保險(xiǎn)是(ACE),當(dāng)參保人遭遇疾病時(shí)向其提供醫(yī)療費(fèi)用補(bǔ)償?shù)囊环N制度安排。 A.政府主導(dǎo)B.社會(huì)捐贈(zèng)C.國(guó)家立法D.企業(yè)贊助E.依法籌資 15、醫(yī)療保險(xiǎn)中的待遇水平主要體現(xiàn)在(ABC) A.起付線B.封頂線C.報(bào)銷比例D.患者自負(fù)E.財(cái)政補(bǔ)貼 16、失業(yè)的類型有:(ABCDE) A.摩擦性失業(yè)B.結(jié)構(gòu)性失業(yè)C.周期性失業(yè) D.季節(jié)性失業(yè)E.技術(shù)性失業(yè) 17、就業(yè)保障制度由哪些方面構(gòu)成(BCD) A.社會(huì)互助B.失業(yè)預(yù)防C.失業(yè)保險(xiǎn)D.失業(yè)補(bǔ)助E.社會(huì)福利 18.在社會(huì)保險(xiǎn)中,保險(xiǎn)涉及面最廣.運(yùn)作機(jī)制最復(fù)雜的是(A)保險(xiǎn)。 A.醫(yī)療B.養(yǎng)老C.工傷D.生育E.失業(yè) 19、戰(zhàn)后幾乎把國(guó)民生產(chǎn)總值的2/3用在建設(shè)“福利國(guó)家”上,并以其福利項(xiàng)目全、保障范圍廣、待遇標(biāo)準(zhǔn)高的社會(huì)福利體系而被譽(yù)為“福利國(guó)家”典范的是() A.奧地利B.瑞典C.法國(guó)D.聯(lián)邦德國(guó)E.日本 20、現(xiàn)代社會(huì)保障體系中最重要的子系統(tǒng)是() A.社會(huì)保險(xiǎn)B.社會(huì)救助C.社會(huì)福利 D.社會(huì)互助E.養(yǎng)老保險(xiǎn) 連線題 答案在P1 5是非題參考知識(shí)點(diǎn) 社會(huì)保障的主要責(zé)任主體是民間組織,國(guó)家或政府只是補(bǔ)充。(X) 社會(huì)保障的主要責(zé)任主體是國(guó)家或政府,民間組織只是補(bǔ)充。 商業(yè)保險(xiǎn)受社會(huì)保險(xiǎn)法的法律約束。(X) 商業(yè)保險(xiǎn)受商業(yè)保險(xiǎn)法、消費(fèi)者保護(hù)法的法律約束 社會(huì)市場(chǎng)經(jīng)濟(jì)理論產(chǎn)生與20世紀(jì)20-30年代的英國(guó),成熟于40-70年代,是介于自由資本主義與社會(huì)民主主義之間的一種思想流派或價(jià)值體系。(X) 社會(huì)市場(chǎng)經(jīng)濟(jì)理論產(chǎn)生與20世紀(jì)20-30年代的德國(guó),成熟于40-70年代,是介于自由資本主義與社會(huì)民主主義之間的一種思想流派或價(jià)值體系。 社會(huì)保障基金是國(guó)家依據(jù)法律和政策規(guī)定,通過法定程序,以各種方式強(qiáng)制建立起來的用于實(shí)施各項(xiàng)社會(huì)保障制度、可以通融使用的貨幣資金。(X) 社會(huì)保障基金是國(guó)家依據(jù)法律和政策規(guī)定,通過法定程序,以各種方式強(qiáng)制建立起來的用于實(shí)施各項(xiàng)社會(huì)保障制度、專款專用的貨幣資金。 社會(huì)統(tǒng)籌與個(gè)人賬戶相結(jié)合是中國(guó)養(yǎng)老保險(xiǎn)基金收支管理的一種新模式。其主要理念是將平等與效率相結(jié)合,把社會(huì)互濟(jì)與自我保障相結(jié)合。(√) 論述題 結(jié)合實(shí)際論述社會(huì)保障的意義。答案P16 案例分析 案例一:?jiǎn)挝徊焕U費(fèi)我該怎么辦? 張某2003年8月與單位解除勞動(dòng)合同,成了一名失業(yè)者。不久,經(jīng)朋友介紹到本市某單位開通勤車,但由于張某是失業(yè)者,單位不愿意為張某繳納社會(huì)保險(xiǎn)費(fèi),3個(gè)月后,張某被一個(gè)“協(xié)?!比藛T替代了。去年5月在一位熱心朋友的引薦下,張某到一家私企開車,可老板還是不為張某繳社會(huì)保險(xiǎn)費(fèi),張某感到這樣下去不是辦法,便把參加社會(huì)保險(xiǎn)的事提了出來,老板要張某自己到外面找地方繳。張某今年年齡也不小了,怕丟失現(xiàn)在的工作,想暫時(shí)不提繳費(fèi)的事了,等以后離開單位后再說,到時(shí)讓他們一起“補(bǔ)”??蓮埬承睦餂]底,這樣做有問題嗎? 分析提綱: 1、企業(yè)不為員工繳社保是不對(duì)的,外面也沒有什么機(jī)構(gòu)可掛靠代繳社保。社會(huì)保險(xiǎn)具有強(qiáng)制性特征,用人單位不為職工繳納社會(huì)保險(xiǎn)費(fèi)是一種違法行為。我國(guó)《憲法》規(guī)定:“中華人民共和國(guó)公民在年老、疾病或者喪失勞動(dòng)能力的情況下,有從國(guó)家和社會(huì)獲得物質(zhì)幫助的權(quán)利?!薄秳趧?dòng)法》第七十條規(guī)定:“國(guó)家發(fā)展社會(huì)保險(xiǎn),建立社會(huì)保險(xiǎn)制度,設(shè)立社會(huì)保險(xiǎn)基金,使勞動(dòng)者在年老、患病、工傷、失業(yè)、生育等情況下獲得幫助和補(bǔ)償。”《社會(huì)保險(xiǎn)費(fèi)征繳暫行條例》第七條規(guī)定:“繳費(fèi)單位必須向當(dāng)?shù)厣鐣?huì)保險(xiǎn)經(jīng)辦機(jī)構(gòu)辦理社會(huì)保險(xiǎn)登記,參加社會(huì)保險(xiǎn)”。 2、本案例可從以下四個(gè)方面進(jìn)行分析: (1).用人單位不為職工繳納社會(huì)保險(xiǎn)費(fèi)是一種違法行為。案例中張某的老板招用了張某但未給他繳納社會(huì)保險(xiǎn),違反了《勞動(dòng)法》的相關(guān)條例。 (2).私企老板讓張某自己解決繳納社會(huì)保險(xiǎn)費(fèi)問題,這不僅對(duì)張某構(gòu)成了侵權(quán),同時(shí)也是一種違法的用工行為。根據(jù)勞動(dòng)法律、法規(guī)規(guī)定,中國(guó)境內(nèi)的所有企業(yè)、個(gè)體經(jīng)濟(jì)組織、民辦非企業(yè)單位、企業(yè)化管理的事業(yè)單位及其職工都應(yīng)依法參加社會(huì)保險(xiǎn)。這是《勞動(dòng)法》規(guī)定的用人單位應(yīng)盡的法律職責(zé),任何單位都不可規(guī)避為員工繳費(fèi)的義務(wù)。 (3).本市也沒有專門接受職工掛靠、幫助用人單位規(guī)避履行繳費(fèi)義務(wù)的機(jī)構(gòu)。 (4).勞動(dòng)者與用人單位勞動(dòng)關(guān)系存續(xù)期間,用人單位不履行社會(huì)保險(xiǎn)繳費(fèi)義務(wù)的,勞動(dòng)者隨時(shí)可以通過申請(qǐng)勞動(dòng)爭(zhēng)議仲裁或舉報(bào),來要求用人單位履行社會(huì)保險(xiǎn)繳費(fèi)義務(wù),包括與用人單位終止勞動(dòng)關(guān)系后。 3、因此,張某可到當(dāng)?shù)氐膭趧?dòng)爭(zhēng)議仲裁委員會(huì)提出訴訟,要求單位為他補(bǔ)繳拖欠的社會(huì)保險(xiǎn)費(fèi)用。作為普通勞動(dòng)者,我們應(yīng)該多學(xué)習(xí)相關(guān)的勞動(dòng)保障的條例,切實(shí)維護(hù)自己的權(quán)益,避免出現(xiàn)像張某這樣的侵權(quán)事件。同時(shí),是要加強(qiáng)社會(huì)保險(xiǎn)有關(guān)法律法規(guī)政策的宣傳,提高用人單位和職工依法參加社會(huì)保險(xiǎn)的自覺意識(shí)。另外,是勞動(dòng)保障行政部門要進(jìn)一步加強(qiáng)勞動(dòng)合同鑒證工作,加強(qiáng)勞動(dòng)合同管理,促進(jìn)用人單位和職工之間簽訂合法有效的勞動(dòng)合同,維護(hù)勞動(dòng)合同雙方當(dāng)事人的合法權(quán)益。 案例六:辭職后醫(yī)療費(fèi)無著落該怨誰(shuí) 老王的兒子原在本市某酒店工作,前不久,因其身患疾病,向單位提出請(qǐng)病假治療。單位的部門領(lǐng)導(dǎo)在了解了情況后,“勸” 老王的兒子寫份辭職報(bào)告,單位多發(fā)一個(gè)月工資,等病好了再來上班。由于老王的兒子不懂政策,稀里糊涂地交了辭職報(bào)告。后經(jīng)幾家醫(yī)院診斷,老王的兒子患上了一種慢性病,且今后對(duì)腦神經(jīng)也會(huì)產(chǎn)生影響,醫(yī)生說需要較長(zhǎng)時(shí)間的治療。老王在得知這一情況后,馬上與他單位聯(lián)系,希望能對(duì)患病的兒子通融、照顧一下。但單位以辭職報(bào)告不可更改為由,一口回絕。老王不知道單位的這種做法是否合法?老王該怎么辦? 分析提綱: 1.我們對(duì)老王的兒子目前的處境深表同情,老王的兒子接下來看病用藥將會(huì)給家庭增加一筆不小的醫(yī)療費(fèi)用。 2.醫(yī)療保險(xiǎn)是有國(guó)家立法,通過強(qiáng)制性社會(huì)保險(xiǎn)原則,由國(guó)家、單位(雇主)和個(gè)人繳納保險(xiǎn)費(fèi)進(jìn)行籌資,建立醫(yī)療保險(xiǎn)基金,當(dāng)個(gè)人因病接受了醫(yī)療服務(wù)時(shí),由社會(huì)保險(xiǎn)機(jī)構(gòu)提供醫(yī)療保險(xiǎn)費(fèi)用補(bǔ)償?shù)囊环N社會(huì)保險(xiǎn)制度。醫(yī)療保險(xiǎn)是國(guó)家法定的險(xiǎn)種,即一旦用人單位招用了勞動(dòng)者,就必須履行為其繳納醫(yī)療保險(xiǎn)的義務(wù),勞動(dòng)者可在接受醫(yī)療服務(wù)后獲得相應(yīng)的補(bǔ)償。但從案例的情況來看,老王的兒子向單位遞交辭職報(bào)告,是一種主動(dòng)要求解除勞動(dòng)合同的行為,單位一經(jīng)同意,完全有理由回絕老王的兒子要求恢復(fù)勞動(dòng)關(guān)系的請(qǐng)求。 3.職工的患病醫(yī)療期是針對(duì)勞動(dòng)合同履行期間而設(shè)定的。不同的勞動(dòng)合同期限,有不同的醫(yī)療期,一般來說,醫(yī)療期最多不超過24個(gè)月。案例中老王兒子的醫(yī)療期得視他的勞動(dòng)合同期來確定。 4.失業(yè)人員在領(lǐng)取失業(yè)保險(xiǎn)金期間患病的,根據(jù)本市相關(guān)政策也可按規(guī)定領(lǐng)取醫(yī)療補(bǔ)助金。根據(jù)本市失業(yè)保險(xiǎn)的相關(guān)規(guī)定,失業(yè)人員在領(lǐng)取失業(yè)保險(xiǎn)金期間患病,并在戶籍所在地的地段醫(yī)院或者由失業(yè)保險(xiǎn)管理部門指定的醫(yī)院就診的,可申請(qǐng)醫(yī)療補(bǔ)助金,符合本市職工基本醫(yī)療保險(xiǎn)規(guī)定的用藥范圍、診療項(xiàng)目、醫(yī)療服務(wù)設(shè)施和費(fèi)用標(biāo)準(zhǔn)的,由失業(yè)保險(xiǎn)給予70%的補(bǔ)貼。如醫(yī)療費(fèi)用較大,本人及其家庭承擔(dān)確有困難,可以申請(qǐng)適當(dāng)增加。所以老王兒子在此失業(yè)的情況下,可在發(fā)生醫(yī)療費(fèi)用的次月,攜帶《勞動(dòng)手冊(cè)》和醫(yī)療費(fèi)單據(jù),到街道或鄉(xiāng)鎮(zhèn)就業(yè)服務(wù)機(jī)構(gòu)提出申請(qǐng)醫(yī)療補(bǔ)助金。 5.這次辭職經(jīng)歷,對(duì)老王的兒子來講,可謂教訓(xùn)深刻,代價(jià)昂貴。對(duì)其他勞動(dòng)者來講,應(yīng)多學(xué)習(xí)勞動(dòng)保障的相關(guān)法律法規(guī),切實(shí)維護(hù)自身的權(quán)益。第四篇:廣東海洋大學(xué)數(shù)據(jù)結(jié)構(gòu)試卷及答案
第五篇:社會(huì)保障學(xué) 期中試卷答案