首页 > 现代教学 > 自考真题 > 全国2005年1月数据结构真题
 

全国2005年1月数据结构真题

日期:2006-06-15 00:53:48  来源:
请您记住思索网的网址: http://www.4so.net  [加入收藏夹]

    

课程代码: 02331

第一部分 选择题 (共30分)

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

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

1.数据元素及其关系在计算机存储器内的表示,称为数据的( )

A.逻辑结构 B.存储结构 C.线性结构 D.非线性结构

2.某带头结点的单链表的头指针为head,判定该链表为非空的条件是( )

A.head==NULL B.head->next==NULL C.head!=NULL D.head->next!=NULL

3.导致栈上溢的操作是( )

A.栈满时执行的出栈 B.栈满时执行的入栈

C.栈空时执行的出栈 D.栈空时执行的入栈

4.设数组A[m]为循环队列Q的存储空间,front为队头指针,rear为队尾指针,则判定Q为空队列的条件是( )

A.(rear-front)%m= =1 B.front= =rear

C.(rear-front)%m= =m-1 D.front= =(rear+1)%m

5.假设S=″I AM A STUDENT″,则运算substr(S,4,8)的结果为( )

A.″M A S″ B.″M A STUD″ C.″A STUDEN″ D.″STUD″

6.在执行简单的串匹配算法时,最坏的情况为每次匹配比较不等的字符出现的位置均为( )

A.模式串的最末字符 B.主串的第一个字符

C.模式串的第一个字符 D.主串的最末字符

7.从广义表L=(((d),c,d))中分解得到(d)的操作为( )

A.head(head(head(L))) B.head(tail(head(L)))

C.tail(head(head(L))) D.tail(tail(head(L)))

8.假设一棵完全二叉树按层次遍历的顺序依次存放在数组BT[m]中,其中根结点存放在BT[0],若BT[i]中的结点有左孩子,则左孩子存放在( )

A.BT[i/2] B.BT[2*i-1] C.BT[2*i] D.BT[2*i+1]

9.右图所示二叉树的中序序列是( )

A.DHEBAFIJCG B.DHEBAFJICG C.DBHEAFCJIG D.DBHEAFJICG

10.连通图是指图中任意两个顶点之间( )

A.都连通的无向图 B.都不连通的无向图

C.都连通的有向图 D.都不连通的有向图

11.下图所示带权无向图的最小生成树的权为( )

A.14 B.15 C.17 D.18

12.对记录序列(314,298,508,123,486,145)依次按个位和十位进行两趟基数排序之后所得结果为( )

A.123,145,298,314,486,508 B.508,314,123,145,486,298

C.486,314,123,145,508,298 D.298,123,508,486,145,314

13.在待排关键字序列基本有序的前提下,效率最高的排序方法是( )

A.直接插入排序 B.快速排序 C.直接选择排序 D.归并排序

14.在下列各棵二叉树中,二叉排序树是( )

15.采用ISAM或VSAM组织的文件是( )

A.索引非顺序文件 B.顺序文件 C.索引顺序文件 D.散列文件


第二部分 非选择题 (共70分)


二、填空题(本大题共10小题,每小题2分,共20分)

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

16.在一个长度为n的循环链表中,删除其元素值为x的结点的时间复杂度为______。

17.已知指针p指向某单链表中的一个结点,则判别该结点有且仅有一个后继结点的条件是______。

18.如果入栈序列是1,3,5,…,97,99,且出栈序列的第一个元素为99,则出栈序列中第30个元素为______。

19.已知广义表LS为空表,则其深度为______。

20.假设以行优先顺序存储三维数组A[5][6][7],其中元素A[0][0][0]的地址为1100,且每个元素占2个存储单元,则A[4][3][2]的地址是______。

21.已知一棵二叉树的先序序列为ABCD,中序序列为BCAD,则它的后序序列为______。

22.在含n个顶点的连通图中,任意两个不同顶点之间的一条简单路径最多包含______条边。

23.对关键字序列(50,34,92,19,11,68,56,41,79)进行直接插入排序,当将第7个关键字56插入到当前的有序子表中时,为寻找插入位置需进行______次关键字之间的比较。

24.对有序表进行二分查找的过程可用判定树来描述,其判定树的形态只取决于______。

25.将有序表中n个元素依次插入到一棵空的二叉排序树中,则在等概率查找的情况下,该二叉排序树在查找成功时的平均查找长度是______。

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

26.(1)写出右侧图形表示的广义表L。

(2)画出其表头与表尾均为(a,(b,c))的广义表L1的图形表。

(1)

(2)

27.试推导一棵满k叉树上的叶子结点数a与非叶子结点数b之间满足以下关系:

a=(k-1)b+1

28.假设用迪杰斯特拉(Dijkstra)算法求下列图中从顶点a到其余各顶点的最短路径,按求解过程依次写出各条最短路径及其长度。

29.已知关键字序列在R[1..8]中的初始状态为

R

48

70

33

65

24

56

12

92

1

2

3

4

5

6

7

8

写出在将它调整为大根堆的过程中每一次筛选后R的状态。

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

30.如果希望循环队列中的向量单元都能得到利用,则可设置一个标志域tag,每当尾指针和头指针值相同时,以tag的值为0或1来区分队列状态是“空”还是“满”。请对下列函数填空,使其分别实现与此结构相应的入队列和出队列的算法。

int EnQueue(CirQueue *Q,DataType x){

if( (1) ) return 0;

Q->data[Q->rear]=x;

Q->rear=(Q->rear+1)% MAXQSIZE

(2)

return 1;

}

int DeQueue(CirQueue *Q,DataType *x){

if( (3) ) return 0;

*x=Q->data[Q->front];

Q->front= (4) ;

(5) ;

return 1;

}

(1)

(2)

(3)

(4)

(5)

31.已知具有n个结点的完全二叉树采用顺序存储结构存储在向量BT[1..n]中,结点的数据元素为字符类型,请阅读下列算法,并回答问题:

(1)假设向量BT中的内容为:

BT

A

B

C

D

E

F

1

2

3

4

5

6

写出执行f31(BT,6)后的输出结果;

(2)说明该算法的功能。

void f31(char BT[],int n)

{ int i=1;

while(i>0)

if(i<=n) {

printf(″%c″, BT[i]);

i=i*2;

}else{

do {i=i/2;} while(i%2);

if(i>0) i++;

}

}

(1)

(2)

32.设数组f的初始元素序列为:

f[1..9]=(1,3,2,3,3,2,1,2,1)

阅读下列算法,并回答问题。其中算法f32中调用的函数swap(a,b)用以完成交换a和b的值。

(1)写出执行f32(f,9,3,1)之后f[1..9]中的元素序列,并写出在执行过程中调用swap函数的次数。

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

void f32(int f[],int n,int x,int y) {

int i=1,j=1,k=n;

while (j<=k)

if (f[j]==y)j++;

else if (f[j]==x)

{ swap(f[i],f[j]);i++;j++;}

else {swap(f[k],f[j];k--;}

}

(1)

(2)

33.下列算法利用二分查找方法在有序表r中插入元素x,并保持表r的有序性,其中参数*n为表r的长度。请在空缺处填入合适的内容,使其成为一个完整的算法。

void BinInsert(SeqList r,int *n,DataType x)

{ int low=1,high=*n,mid,i;

while(low<=high)

{ mid= (1) ;

if (x.key<r[mid].key)high=mid-1;

else (2) ;

}

for(i=*n; (3) ;i--)

r[i+1]=r[i];

(4) ;

*n++;

}

(1)

(2)

(3)

(4)

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

34.假设一元多项式以循环链表表示,链表的结点结构为:

typedef struct PNode {

float coef; //系数

int exp; //指数

struct PNode *next;

}*LinkList;

现需要将一个用循环链表h表示的代数多项式拆分成两个多项式循环链表h1和h2,其中h1仅含多项式的奇次项,h2仅含多项式的偶次项。要求利用原链表中的结点构成链表h1和h2。例如多项式7x8+5x3-4x的循环链表为

经拆分之后的情况应是:

请编写完成上述拆分的算法,并进行算法分析。

 
 
热门信息
 
相关文章