2005-2006年北京大学数据结构期末考试试题

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

2005-2006年北京大学数据结构期末考试试题

(答案写在答题纸上)

一、简答(10分)

(1) 什么是数据结构?它主要研究的问题是什么?

答:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

数据结构研究的问题是数据的物理结构和逻辑结构,以及在此结构上 定义并实现相关的运算,计算算法的效率。

(2)阅读以下程序,写出带@ 语句的频度(运行次数)。 X=91;Y=100;

While(Y>=0)

If (X>100) ……………@

{X - =10;Y - -}

Else

X++; 答: 频度为1111次

二、编程(10分)

编制一个程序就地实现单链表的逆置算法。

说明:1.算法中不能再另外增加结点空间(即不能在算法中使用

malloc()函数分配新的结点空间),但可以增加几个必要的指针变量。

2.该单链表具有头结点。 例如: L

答案:

invert(Linklist &L) { p=L;

q=L->next; while(q)

{r=q->next; q->next=p;

p=q; q=r;}

L->next=NULL; L=p;}

评分标准:总分为10分。程序不同,但思路正确者也可酌情给分。

三、编程(10分)

用循环队列将序列a0 a1 a2 a3┉┉ak-1 ak ┉an 循环右移k 位。 (序列变为ak ┉┉an a0 a1 a2 a3┉ak-1)。

答案:

Right(SqQueue &Q,int k) { for(I=1;I<=k;I++)

{ Q.base[Q.rear]=Q.base[Q.front];

Q.rear=(Q.rear+1)%Maxsize; Q.front=(Q.front+1)%Maxsize;} }

评分标准:总分为10分。出队为8分,入队为2分。程序不同,但思路正确

也可酌情给分。

四、树(10分)

已知一棵二叉书树的先序序列为ABDHECFGI ,中序序列为DHBEAFCIG ,画

出该二叉树。

五、画图(10分)

画出下图的最小生成树。 设有一组关键字,其出现次序为:105,97,28,52,37,22,16,90,45,

79,59,76,要求用哈希表方法将它们存入长度为15个位置的表中。

(1).构造一个哈希函数,要求发生的冲突尽可能的少(要求使用除留余数法);

(2).用二次探测再散列法解决冲突。

写出上述各关键字的位置。

七、排序(10分)

给出一组关键字:66,30,78,53,6,18,10,11,20,49,当要求按升序排序时,写出希尔排序(d=5,3,1)的每一趟排序结果。

八、填空(10分)

在P指针指向的结点之前插入新结点(S指针指向新结点)。

(提示:先将S结点插入P结点之后,然后将S结点和P结点的数据交换)s->next=____ p->next ___;

p->next=__s___;

temp=___ s->data _____;

s->data=__ p->data _____;

p->data=___ temp_____;

相关文档
最新文档