数据结构测试题(易)

1.在下面的程序段中,计算过程的时间复杂度是( )。
for(i=1;i<n;i++)
for(j=i;j>0;j–)
a++;
//1+2+3+…n.=(n²+n)/2
答案:O(n²)

*2.对具有n个结点的顺序表中指定内容的结点进行查询定位操作,其算法时间复杂度为O()
答案:O(n)

3.两个指针P和Q,分别指向单链表的两个元素,P所指元素是Q所指元素前驱的条件
答案:p->next==Q;

4.顺序表求表长的时间复杂度为( )
//所含数据元素的个数
答案:O(1)

5.单链表求表长的时间复杂度为( )
//while(p!=NULL)
{
P=P->next;
j++;
}
答案:O(n)

6.设栈s 和队列q的初始状态都为空,元素a,b,c,d,e,f依次进入栈s,元素出栈后即进入队列q,若6个元素出队的序列是bedcaf,则栈s的容量至少应能容纳( )个元素 。
答案:4

7.void test1(BitreeNode * T){
if (T) {
count ++;
test1(T->lchild);
test1(T->rchild);
}
}
该算法的功能是( )
答案:统计树内所有节点数量

8.二叉树的4种遍历方法中,若采用其中2种遍历序列恢复二叉树,( )遍历序列是必不可少的。
//只知前序和后序,无法知道具体左右子树元素
答案:中序遍历

9.二叉树遍历的时间复杂度为( )
//前序,中序,后序,层次遍历(递归)
答案:O(n)

10.设结点的权集W ={3,10,6,2,7},为其构造相应的哈夫曼树,则其带权路径长度为( )
答案:61

11.无向图G=(V,E),其中V={A,B,C,D,E,F},E={(A,C),(B,C),(A,D),(A,F),(C,F),(D,E),(F,E)},按头插法为其建立邻接表,以A为起点,采用广度优先搜索依次访问的结点序列为( )
//头插法是用栈,故边是先进后出
答案:AFDCEB

12.无向图G=(V,E),其中V={A,B,C,D,E,F},E={(A,C),(B,C),(A,D),(A,F),(C,F),(D,E),(F,E)},按边信息构造邻接矩阵后,以A为起点,
采用广度优先搜索依次访问的结点序列为( )
答案:ACDFBE

13.无向图G=(V,E),其中V={A,B,C,D,E,F},E={(A,C),(B,C),(A,D),(A,F),(C,F),(D,E),(F,E)},按边信息构造邻接矩阵后,以A为起点,
采用深度优先搜索依次访问的结点序列为( )
答案:ACBFED

14.将无序关键字序列{13,6,19,5,9,27,18}构造为二叉排序树,在该树中查找关键字5需要经过( )次查询操作.
//一大一小
//if(k==bt->key)return bt;
//else if(k<bt-key)return search(bt->lchild,k);
//else return search(bt->rchild,k);
答案:3

15.堆排序在最好或最坏的情况下,时间复杂度都为
/for(i=L->length/2;i>0;i–)
heapadjust(L,i,L->length);
for(i=L->length;i>1;i–)
{
swap(L,1,i);
heapdajust(L,1,i-1);
}
temp=L->r[j];
for(j=2
s;j<=m;j*=2)
{
if(j<m&&L->r[j]>L->r[j+1])
++j;
if(temp>L->r[j])break;
L->r[s]=L->r[j];
s=j;
}
L->r[s]=temp;*/
答案:O(n㏒₂n)

16在这里插入图片描述
5,15

17.已知关键字序列{12,8,4,9,2,13},哈希表装填因子为0.75,若采用除p留余法构表和线性探测法处理冲突,则表长为( ),p值应选为( ),查找成功的平均查找长度为( )。注:计算结果保留小数点后两位。
//装填因子=元素个数/表长
//通常p为小于或等于表长的最小质数或不包含小于20质因子的合数
答案:8,7,1.17(7/6)

18.请对以下快速排序算法进行填空:通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可以分别对这两部分记
录继续进行排序,以达到整个序列有序。
void QuickSort(LineList r[],int first,int end)
{
int i,j;
LineList temp;
i=first; j=end;___ ;
while(i<j)
{
while (i<j && r[j].Key>=temp.Key)
j–;
r[i]=r[j];
while (i<j && r[i].Key<=temp.Key)
____;
r[j]=r[i];
}
r[i]=temp;
if (first<
__) QuickSort(r,first,i-1);
if (i+1<end) QuickSort(r,i+1,end);
}
答案:
1.temp=r[i]
2.i++
3.i-1

19.已知无序关键字序列{12,8,4,9,11,14,7},若采用快速排序算法进行升序排序,第一趟排序结果为
,___,___,___,___,___,___,第二趟排序结果为,___,___,___,___,___,___
答案:7,8,4,9,11,12,14
4,7,8,9,11,12,14

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
第一章概论 自测答案 一、填空 1. 数据结构是一门研究非数值计算的程序设计问中计算机的 操作对象 以及它们之间的 关系 和运算等的学科。 2. 数据结构被形式地定义为(D, R),其中D是 数据元素 的有限集合,R是D上的 关系 有限集合。 3. 数据结构包括数据的 逻辑结构 、数据的 存储结构 和数据的 运算 这三个方面的内容。 4. 数据结构按逻辑结构可分为两大类,它们分别是 线性结构 和 非线性结构 。 ....... 第2章 自测卷答案 一、填空 1. 【严集2.2①】在顺序表中插入或删除一个元素,需要平均移动 表中一半元素,具体移动的元素个数与 表长和该元素在表中的位置 有关。 2. 线性表中结点的集合是 有限 的,结点间的关系是 一对一 的。 3. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动 n-i+1 个元素。 4. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动 n-i 个元素。 5. 在顺序表中访问任意一结点的时间复杂度均为 O(1) ,因此,顺序表也称为 随机存取 的数据结构。 ....... 第8章 查找 自测卷 姓名 班级 一、填空(每空1分,共10分) 1. 在数据的存放无规律而言的线性表中进行检索的最佳方法是 顺序查找(线性查找) 2. 线性有序表(a1,a2,a3,…,a256)是从小到大排列的,对一个给定的值k,用二分法检索表中与k相等的元素,在查找不成功的情况下,最多需要检索 8 次。设有100个结点,用二分法查找时,最大比较次数是 7 。 3. 假设在有序线性表a[20]上进行折半查找,则比较一次查找成功的结点数为1;比较两次查找成功的结点数为 2 ;比较四次查找成功的结点数为 8 ;平均查找长度为 3.7 。解: 显然,平均查找长度= O(log 2 n) <5次(2 5 )。但具体是多少次,则不应当按照公式来计算( 即( 21×log 2 21)/20=4.6次并不正确! )。因为这是在假设 n=2 m -1的情况下推导出来的公式。应当用穷举法罗列全部元素的查找次数为=( 1+2×2+4×3+8×4+5×5)=74; ASL=74/20=3.7 !!! 4. 折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素 28. 6. 12 .20 比较大小。 .........

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尾迹双冒号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值