数据结构试卷(一)
一、單選題(每題 2 分,共20分)
A.只允許在端點處插入和刪除元素
B.都是先進后出
C.都是先進先出
D.沒有共同點
A. 僅修改頭指針
B. 頭、尾指針都要修改
C. 僅修改尾指針
D.頭、尾指針可能都要修改(尾插和頭插)
A. 隊列
B. 棧
C. 線性表
D. 二叉樹(樹結構)
A.688
B.678
C.692
D.696
A.有序數據元素
B.無序數據元素
C.元素之間具有分支層次關系的數據
D.元素之間無聯系的數據
A.2k-1
B.2K+1
C.2K-1
D. 2k-1
A. 1,2,3
B. 9,5,2,3
C. 9,5,3
D. 9,4,2,3
A. O(1)
B. O(n)
C. O(1og2n)
D. O(n2)
A.1
B.2
C.3
D.4
A.5
B.6
C.7
D.8
二、填空題(每空1分,共26分)
三、計算題(每題 6 分,共24分)
在如下數組A中鏈接存儲了一個線性表,表頭指針為A [0].next,試寫出該線性表。
A 0 1 2 3 4 5 6 7 data 60 50 78 90 34 40next 3 5 7 2 0 4 1(78,50,40,60,34,90)E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15,
(3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25};
用克魯斯卡爾算法得到最小生成樹,試寫出在最小生成樹中依次得到的各條邊。
(1,2)3-》(4,6)4-》(1,3)5-》(1,4)8-》(2,5)10-》(4,7)20
4
2,4
2,4,5
2,4,5,8
2,3,5,4,8
四、閱讀算法(每題7分,共14分)
LinkList mynote(LinkList L){//L是不帶頭結點的單鏈表的頭指針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;}請回答下列問題:
(1)說明語句S1的功能;
查詢鏈表的尾結點
(2)說明語句組S2的功能;
將第一個結點鏈接到鏈表的尾部,作為新的尾結點
(3)設鏈表表示的線性表為(a1,a2, …,an),寫出算法執行后的返回值所表示的線性表。
該算法的功能是:返回的線性表為(a2,a3,…,an,a1)遞歸地后序遍歷鏈式存儲的二叉樹
五、算法填空(共8分)
二叉搜索樹的查找——遞歸算法:
bool Find(BTreeNode* BST,ElemType& item) { if (BST==NULL)return false; //查找失敗else {if (item==BST->data){item=BST->data;//查找成功return _true_;}else if(item<BST->data)return Find(_BST->left_,item);else return Find(_BST->right_,item);}//if }六、編寫算法(共8分)
統計出單鏈表HL中結點的值等于給定值X的結點數。
int CountX(LNode* HL,ElemType x)
總結
- 上一篇: css盒子模型
- 下一篇: 聊一聊Android的第三方开发组件