求答案

一、单项选择题(本大题共15小题,每小题2分,共30分)

在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。

1.按值可否分解,数据类型通常可分为两类,它们是(   )

A.静态类型和动态类型                                   B.原子类型和表类型

C.原子类型和结构类型                                   D.数组类型和指针类型

2.对于三个函数f(n)=2008n3+8n2+96000g(n)=8n3+8n+2008h(n)=8888nlogn+3n2,下列陈述中成立的是(   )

Af(n)0(g(n))                                              Bg(n)0(f(n))

Ch(n)0(nlogn)                                            Dh(n)0(n2)

3.指针pqr依次指向某循环链表中三个相邻的结点,交换结点*q和结点*r在表中次序的程序段是(   )

Ap->next=r   q->next=r->next   r->next=q

Bp->next=r   r->next=q   q->next=r->next

Cr->next=q   q->next=r->next   p->next=r

Dr->next=q   p->next=r   q->next=r->next

4.若进栈次序为abc,且进栈和出栈可以穿插进行,则可能出现的含3个元素的出栈序列个数是(   )

A3                                                                B5

C6                                                                 D7

5.假设以数组An]存放循环队列的元素,其头指针front指向队头元素的前一个位置、尾指针rear指向队尾元素所在的存储位置,则在少用一个元素空间的前提下,队列满的判定条件为(   )

Arear= =front                                                 B(front+1)n= =rear

Crear+1= =front                                             D(rear+1)n= =front

6.串的操作函数str定义为:

int  str(char*s)  {

char  *p=s

while  (*p=/0)p++

return p-s

}

str(abcde)的返回值是(   )

A3                                                                B4

C5                                                                 D6

7.二维数组A10][6]采用行优先的存储方法,若每个元素占4个存储单元,已知元素A3][4]的存储地址为1000,则元素A4][3]的存储地址为(   )

A1020                                                           B1024

C1036                                                           D1240

8.对广义表L= (a())执行操作tail(L)的结果是(   )

A()                                                                B(())

Ca                                                                 D(a)

9.已知二叉树的中序序列和后序序列均为ABCDEF,则该二叉树的先序序列为(   )

AFEDCBA                                                    BABCDEF

CFDECBA                                                     DFBDCEA

10.已知森林F={T1T2T3T4T5},各棵树Ti(i=12345)中所含结点的个数分别为735l2,则与F对应的二叉树的右子树中的结点个数为(   )

A2                                                                B3

C8                                                                 D11

11.若连通无向图G含有21条边,则G的顶点个数至少为(   )

A7                                                                B8

C21                                                               D22

12.如图所示的有向图的拓扑序列是(   )

Acdbae

Bcadbe

Ccdeab

Dcabde

13.对关键字序列(61437285)进行快速排序时,以第1个元素为基准的一次划分的结果为(   )

A(51436287)                         B(51432678)

C(51432687)                         D(87654321)

14.分块查找方法将表分为多块,并要求(   )

A.块内有序                                                    B.块间有序

C.各块等长                                                    D.链式存储

15.便于进行布尔查询的文件组织方式是(   )

A.顺序文件                                                    B.索引文件

C.散列文件                                                    D.多关键字文件

 

二、填空题(本大题共10小题,每小题2分,若有两个空格,每个空格1分,共20分)

请在每个空格中填上正确答案。错填、不填均无分。

16.数据的链式存储结构的特点是借助________表示数据元素之间的逻辑关系。

17.如果需要对线性表频繁进行________________操作,则不宜采用顺序存储结构。

18.如图所示,可以利用一个向量空间同时实现两个类型相同的栈。其中栈1为空的条件是top1=0,栈2为空的条件是top2=n-1,则“栈满”的判定条件是________

 

19.静态存储分配的顺序串在进行插入、置换和________等操作时可能发生越界。

20.广义表L=a,(b( )))的深度为________

21.任意一棵完全二叉树中,度为1的结点数最多为________

22.求最小生成树的克鲁斯卡尔(Kruskal)算法耗用的时间与图中________的数目正相关。

23.在5B-树中,每个结点至多含4个关键字,除根结点之外,其他结点至少含________个关键字。

24.若序列中关键字相同的记录在排序前后的相对次序不变,则称该排序算法是________的。

25.常用的索引顺序文件是________文件和________文件。

 

三、解答题(本大题共4小题,每小题5分,共20)

26.如图所示,在n×n矩阵A中,所有下标值满足关系式i+jn+l的元素aij的值均为0,现将A中其它元素按行优先顺序依次存储到长度为n(n+1)/2的一维数组sa中,其中元素a1n存储在sa0]。

(1)n=10,元素a49存储在sap],写出下标p的值;

(2)设元素aij存储在sak]中,写出由i,jn计算k的一般公式。

27.由字符集{staeI}及其在电文中出现的频度构建的哈夫曼树如图所示。已知某段电文的哈夫曼编码为111000010100,请根据该哈夫曼树进行译码,写出原来的电文。

28.已知无向图G的邻接表如图所示,

(1)画出该无向图;

(2)画出该图的广度优先生成森林。

 

 

29.对序列(483763962231505511)进行升序的堆排序,写出构建的初始(大根)堆及前两趟重建堆之后的序列状态。

初始堆:

1趟:

2趟:

 

四、算法阅读题(本大题共4小题,每小题5分,共20)

30.阅读下列算法,并回答问题:

(1)无向图G如图所示,写出算法

f30(&G)的返回值;

(2)简述算法f30的功能。

#define  MaxNum  20

int  visited[MaxNum]

void  DFS(Graph  *gint  i)

/*从顶点vi出发进行深度优先搜索,访问顶点vj时置visited[j]1*/

int  f30(Graph  *g)

{  int  ik

for  (i=0  i<g->n  i++)*g->n为图g的顶点数目*

visited[i]=0

for  (i=k=0  i<g->n;  i++)

if  (visited[i]= =0)

{  k++

DFS(gi)

}

return k

}

 

 

31.假设学生成绩按学号增序存储在带头结点的单链表中,类型定义如下:

typedef  struct  Node  {

int  id;            /*学号*/

int  score       /*成绩*/

struct  Node   *next

}  LNode  *LinkList

阅读算法f31,并回答问题:

(1)设结点结构为 ,成绩链表AB如图所示,画出执行算法

f31(AB)A所指的链表;

(2)简述算法f31的功能。

void  f31(LinkList A,  LinkList B)

{  LinkList  p, q;

p=A->next;

q=B->next;

while  (p && q)

{  if  (p->id<q->id)

p=p->next;

else  if (p->id>q->id)

q=q->next;

else

{  if  (p->score<60)

if  (q->score<60)

p->score=q->score;

else p->score=60;

p=p->next;

q=q->next;

}

}

}

32.阅读下列算法,并回答问题:

(1)设串s=OneWorldOneDream”,t=One",pos是一维整型数组,写出算法

f32(stpos)执行之后得到的返回值和pos中的值;

(2)简述算法f32的功能。

int  strlen(char*s)  /*返回串s的长度*/

int  index(char*stchar*t)

*若串t在串st中出现,则返回在串st中首次出现的下标值,否则返回-1*/

int  f32(char*s, char*t, int pos[])

{  int  i, j, k, ls, lt;

ls=strlen(s);

1t=strlen(t);

if  (ls= =0||1t= =0)  return-1;

k=0;

i=0;

do {

j=index(s+i, t);

if  (j>=0)

{  posk++=i+j;

i+=j+1t;

}

}while(i+1t<=1s && j >=0);

return  k;

}

33.二叉排序树的存储结构定义为以下类型:

typedef  int  KeyType;

typedef  struct  node  {

KeyType   key;              /*关键字项*/

InfoType   otherinfo;              /*其它数据项*/

struct  node  *1child,  *rchild;  /*左、右孩子指针*/

}  BSTNode,  *BSTree

阅读算法f33,并回答问题:

(1)对如图所示的二叉排序树T,写出f33(T8)

返回的指针所指结点的关键字;

(2)在哪些情况下算法f33返回空指针?

(3)简述算法f33的功能。

BSTNode  *f33(BSTree  T,  KeyType  x)

{     BSTNode   *p;

if  (T= =NULL)  return  NULL;

p=f33(T->1child,  x);

if  (p!=NULL)return p;

if  (T->key>x)return T;

return f33(T-> rchild, x);

}

 

五、算法设计题(本题10分)

34.假设线性表采用顺序存储结构,其类型定义如下:

#define  ListSize  100

typedef  struct  {

int  dataListSize;

int  length;

}  SeqList,  *Table;

编写算法,将顺序表L中所有值为奇数的元素调整到表的前端。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值