首页 > 编程知识 正文

数据结构考试题型,数据结构选择题

时间:2023-05-05 14:58:25 阅读:117401 作者:2972

一、单选题(1题2分,共20分)堆栈和队列的共同特征是(a )。

a .仅允许在端点插入和删除元素

b .都是先进的后起之秀

c .均为先进先出

d .没有共同点且以链接方式存储的队列,在进行插入运算时(d )。

a .仅修改头指针

b .修改头、尾指针

c .只修改末尾指针

d .头、尾指针都有可能修改(尾插和头插) )以下数据结构中,哪个是非线形结构? (d ) ) )。

a .队列

b .栈

c .线性表

d .假设二叉树[树形结构]中设有二维排列A[m][n],A[0][0]的存储位置为644(10 ),A[2][2]的存储位置为676 ) 10 ),各要素占有一个空间C

A.688

B.678

C.692

D.696树最适合表示(c )。

a .有规律的数据要素

b .无序的数据元素

c .要素之间具有分支层次关系的数据

d .要素之间没有联系的数据二叉树的第k层的节点数最大(d )。

A.2k-1

B.2K 1

C.2K-1

在D. 2k-1一维排列A[19]中存储有18个要素的顺序表,第一个要素存储在A[1]中的情况下,如果现在进行二分搜索,则搜索A[3]的比较序列的下标依次为(d )

a.1、2和3

b.9、5、2和3

c.9、5和3

d.9、4、2、3对n个记录文件进行高速排序,所需辅助存储区域大致为(c )时间复杂度为n ) 2

A.o (一) )。

是乙. b.o(n )

c.o(1og2n ) ) )。

d.o(N2 )线性表) 7、34、55、25、64、46、20、10 )存储散列时,如果选择h ) k )=K %9作为散列函数,则散列地址为1的元素是) d

A.1

B.2

C.3

D.4设置了6个节点的无向图,该图至少要有(a )边才能确保是一个连通图。

A.5

B.6

C.7

D.8二、填空题(每空1分,共26分)通常从_准确性_、_可读性_、_健壮性_和_效率_ 4个方面评价算法质量。 一种算法的时间复杂度为(n3 n2log2n 14n )/n2,其数量级由(n_表示)。 一棵树的广义表表示为a(c,d ) e,f,g ),h ) I,j ) ),树中包含的节点数为_9_个,树的深度为_3_,树的度为_3_。 加装式9 2 3 - 10 2/-的值为_-1_。 与骑马订式(3 4X )-2Y/3对应后缀式为_3) 4x*2y*3/-_。 在链表中存储二叉树时,每个节点除了数据域外,还包含指向左边孩子和右边孩子的两个指针。 在此存储结构中,n个节点的二叉树共享_2n_个指针字段,其中_n-1_个指针字段存储地址,_n 1_个指针为空指针。 对于具有n个顶点和e条边的有向图和无向图,对应邻表中包含的边节点分别为_e_个和_2e_个。 AOV网是_有向无环_的图。 具有n个顶点的有向图包含_n(n-1 ) _条边,具有n个顶点的有向图包含_2n(n-1 ) _条边。 假设一个线性表为(12、23、74、55、63、40 ),在Key % 4的条件下分割相同的馀数要素成为一个子表,则得到的四个子表分别为) 12、40 _、_74_、_ 23 在累计排序过程中,对其中一个分支节点进行筛选运算的时间复杂度为_o(log2n ),累计排序过程整体时间复杂度为_no ) log2^n。 在快速排序、堆栈排序和合并排序中,_合并_排序很稳定。 三、算题(各题6分,共24分)将线性表链接保存在以下数组a中,表头指针为A [0].next,试着制作此线性表。

a 1234567 data 605078903440 next 3572041 (78、50、40、60、34、90 )请绘制下图中的邻接矩阵和邻接表。

_ 1234510102101013101141010150110010已知图的顶点集v和边集e分别为v={1、2、3、4、5、6、7};

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、5、8、3时,都会描绘添加数据后堆的变化。 4

二四

2,4,5

2,4,5,8

二三五四八

四.阅读算法(每题7分,共14分)链接列表我的笔记)。

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),写出算法执行后的返回值所表示的线性表。

void ABC(BTNode * BT){ if BT { ABC (BT->left); ABC (BT->right); cout<<BT->data<<' '; } }

该算法的功能是:返回的线性表为(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)

int CountX(LNode* HL,ElemType x) { int i=0; LNode* p=HL;//i为计数器 while(p!=NULL) { if (P->data==x) i++; p=p->next; }//while, 出循环时i中的值即为x结点个数 return i; }//CountX

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。