安徽大学复试数据结构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

安徽大学《数据结构》

一、填空题

1、在具有n个单元的循环队列中,队满时共有个元素。

2、下面程序段的时间复杂度是。

for (i=0;i

for (j=0;j

A[i][j]=0;

3、在线性结构中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有个后续结点。

4、假定一棵二叉树的结点数为18,则它的最小深度为,最大深度为。

5、在一个单链表中p所指结点之后插入一个s所指结点时,应执行下面的操作:

s—>next=____;

p—>next=___;

6、从有序表(12,18,30,43,56,78,82,95)中依次二分查找43和56元素时,其查找长度分别为和。

7、.一棵二叉树有67个结点,这些结点的度要么是0,要么是2。这棵二叉树中度为2的结点有___________________个。

8、在堆排序和快速排序中,若原始记录接近正序或反序,则选用____。

9、若采用邻接表的存储结构,则图的广度优先搜索类似于二叉树的________遍历。

二、单向选择题

1、n个顶点的强连通图中至少含有( )。

A、n—l条有向边

B、n条有向边

C、n(n—1)/2条有向边

D、n(n一1)条有向边

2、在一个不带头结点的单链表HL中,若要向表头插入一个由指针p指向的结点,执行( )。

A、HL=p; p一>next=HL;

B、p一>next=HL;HL=p;

C、p一>next=HL; p=HL;

D、p一>next=HL一>next; HL一>next=p;

3、采用线性链表表示一个向量时,要求占用的存储空间地址()。

A: 必须是连续的 B 部分地址必须是连续的

C: 一定是不连续的D: 可连续可不连续

4、如果想在4092个数据中只需要选择其中最小的5个,采用()方法最好。

A: 起泡排序B: 堆排序C: 锦标赛排序D: 快速排序

5、在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是()。

A: ( front - rear + 1) % m B: ( rear - front + 1) % m

C: ( front - rear + m) % m D: ( rear - front + m) % m

6、数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是( )。

A: 1175 B: 1180 C: 1205 D: 1210

7、已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是( )

A: head(tail(LS)) B: tail(head(LS))

C: head(tail(head(tail(LS))) D: head(tail(tail(head(LS))))

8、某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A: bdgcefha B: gdbecfha C: bdgaechf D: gdbehfca

9、在一个无向图中,所有顶点的度数之和等于所有边数的()倍。

A: 1/2 B: 1 C: 2 D: 4

10、设串s1=’ABCDEFG’,s2=’PQRST’,函数con (x,y)返回x和y串的连接串,subs(s,i,j)返回串s的从序号i的字符开始的j个字符组成的子串,len(s)返回串s的长度,则con (subs (s1,2,len (s2)), subs (s1,len (s2),2))的结果串是()。

A:BCDEF B:BCDEFG C:BCPQRST D:BCDEFEF

三、应用题

一棵深度为h的满m叉树具有如下性质:第h层上的结点都是叶结点,其余各层上每个结点都有m棵非空子树。若按层次从上到下,每层从左到右的顺序从1开始对全部结点编号,试计算:

(1)第k层结点数(1≤k≤h)。

(2)整棵树结点数。

(3)编号为i的结点的双亲结点的编号。

(4)编号为i的结点的第j个孩子结点(若有)的编号。

2已知图G的邻接表如图1所示,请写出:

(1)其从顶点v1出发的深度有限搜索序列;

(2)其从顶点v1出发的广度优先搜索序列。

图1 图G的邻接表

3、以关键码序列(503,087,512,061,908,170,897,275,653,426),为例,手工执行快速排序排序算法,写出每一趟排序结束时的关键码状态:

4.使用哈希函数H(key)=key % 11,把一个整数值转换成哈希表下标,现要把数据1、13、12、34、38、33、27、22插入到哈希表(表1)中。

(1)使用线性探测再散列法构造哈希表,请在表1所示的哈希表中与哈希地址对应的位置上,填写出相应的关键字值和元素插入时的探查次数。

(2)假设查找每个元素的概率相同,求出查找成功时的平均查找长度。

四、算法阅读题(每小题9分,共18分)

1、完成二叉树按层遍历的算法。

void leveltravel ( struct treenode *bt)

{ struct treenode *p,*a[n];

int rear=front = -1;

p=bt;

rear =__________;

a[rear]=p;

while (rear != front)

{ front = ___________;

p=a[front];

printf(“%c”,p->data);

If ( p->left !=null)

{ rear =(rear +1)% n

a[rear]= _________; }

If (p->right!= null)

{rear = (rear +1)%n ;

a[rear]=_________; }

}

}

2、下面算法是对直接插入排序算法的改进,请填写完整void weizhisort(struct node r[ n+1],int n)

{ int low,high,mid,j,i;

for(i=2;i<=n;i++)

{ r[0]=r[i];

low=__________;

high=_________;

while(low<=high)

{ mid=(low+high)/2;

if(r[0].key

_______________;

else low=mid+1; }

for(j=i-1;j>=low;j--)

r[j+1]=r[j];

r[low]=r[0];

}}

相关文档
最新文档