大连理工大学数据结构2003年硕士入学试题

大连理工大学2003年硕士入学试题

数据结构部分(共75分)

一、回答下列问题(20分)

1.循环队列用数组A[0..m---1)存放其数据元素。设tail指向其实际的队尾,front指向其实际队首的前一个位置,则当前队列中的数据元素有多少个?如何进行队空和队满的判断?

2.设散列表的地址空间为0~10,散列函数为H(key)=key%11(%为求余函数),采用线性探查法解决冲突,并将键值序列{15,36,50,27,19,48}依次存储到散列表中,请画出相应的散列表;当查找键值48时需要比较多少次?

3.什么是m阶B-树?在什么情况下向一棵m阶B-树中插入一个关键字会产生结点分裂?在什么情况下从一棵m阶B-树中删除一个关键字会产生结点合并?

4.什么是线索二叉树?一棵二叉树的中序遍历序列为由djbaechif,前序遍历序列为abdjcefhi,请画出该二叉树的后序线索二叉树。

二、请用类C或类PASCAL语言进行算法设计,并回答相应问题。(45分)

1.设计一非递归算法采用深度优先搜索对无向图进行遍历,并对算法中的无向图的存储结构予以简单说明。

2.用链式存储结构存放一元多项式Pn(x)=P1xel+P2xe2+...+Pnxen,其中Pi是指数为ei的项的非零系数,且满足0≤e1≤e2...<en=n。请设计算法将多项式B=Pn2(x)加到多项式A=Pn1(x),同时对算法及链表的结点结构给出简单注释。要求利用Pnl(x)和Pn2(x)的结点产生最后求得的和多项式,不允许另建和多项式的结点空间。

3.(1){Rl,R2,...,Rn}为待排序的记录序列,请设计算法对{R1,R2,...,Rn}按关键字的非递减次序进行快速排序。

(2)若待排序的记录的关键字集合是{30,4,48,25,95,13,90,27,18),请给出采用快速排序的第一趟、第二趟排序结果。

(3)若对(2)中给出的关键字集合采用堆排序,请问初建的小根堆是什么?

(4)当给定的待排序的记录的关键字基本有序时,应采用堆排序还是快速排序?为什么?

三、算法填空(10分)

1.一棵树以孩子兄弟表示法存储,递归算法numberofleaf计算并返回根为r的树中叶子结点的个数(NULL代表空指针)。

typedef struct node{struct node *firstchild,*nextbrother;}TFNNode;

int numberofleaf(TFNNode *r)

{ int num;

if(rNULL) num=0;
else
if(r->firstchildNULL)

num= +numberofleaf;

(r->nextbrother);

else ;

return(num);

}

2.在根结点为r的二叉排序树中,插人数据域值为x的结点,要求插入新结点后的树仍是一棵二叉排序树(NULL代表空指针)。

二叉排序树的结点结构为

typedef struct node

{ int key;

struct node *lc,*rc;

}BiNode;

BiNode *insert(BiNode *r,int x)

{ BiNode *p,*q,s;
s=(BiNode
)malloc(sizeof(BiNode));

s->key=x;

s->lc=NULL;s->rc=NULL;

q=NULL;

if(r==NULL) {r=s;return®;}

p=r;

while( )

{ q=p;

if( ) p=p->lc;

else p=p->rc

}

if(xkey) ;

else ;

return;

}

相关推荐
2401_841495645 小时前
【数据结构】B+树
数据结构·数据库·c++·b+树·概念·结构·操作原理
皓月斯语7 小时前
【C++基础】三目运算符
开发语言·数据结构·c++
剑锋所指,所向披靡!8 小时前
数据结构之拓扑排序
数据结构
夜不会漫长11 小时前
数据结构:链表
数据结构·链表
剑锋所指,所向披靡!12 小时前
数据结构之关键路径
数据结构·算法
笨笨饿12 小时前
101_详解USB协议
java·jvm·数据结构
J-Tony1112 小时前
【Redis】数据结构&&持久化
数据结构·数据库·redis
来一碗刘肉面12 小时前
队列的链式实现
数据结构·c++·算法·链表
奶人五毛拉人一块14 小时前
二分算法以及习题讲解
数据结构·算法·二分
兰令水14 小时前
hot100【acm版】【2026.7.19打卡-java版本】
java·数据结构·算法·leetcode·面试