2005年北航硕士研究生入学考试"数据结构"试题与答案

2005年北航硕士研究生入学考试"数据结构"试题与答案
2006-07-17 19:28
一、(本题10分)
   若散列函数为H(key)=i MOD 7,其中,i为关键字key的第一个字母在英文字母表中的序号,并采用线性探测再散列法处理冲突。请画出在一个初始状态为空、地址域为[0‥6]的散列表中依次插入下列关键字值MON,TUE,WED,THU,FRI,SAT,SUN以后的散列表。

二、算法设计(本题10分)
  所谓二叉树等价,是指它们不仅具有相同的拓扑结构,而且对应结点中包含相同的数据信息。假设二叉树采用二叉链表存储结构,链结点构造为(lchild data rchild),请写一递归算法,判断根结点指针分别为T1与T2的两棵二叉树是否等价。若它们等价,算法返回1,否则返回0。(说明:写成非递归算法不得分)

三、算法设计(本题10分)
  已知一具有n个顶点的有向图G=(V,E)采用邻接表存储方法,请写一算法,检查任意给定序列v1,v2,…,vn(vi∈V,1≤i≤n)是否为该有向图的一个拓扑序列。若是,算法给出信息1,否则,给出信息0。

答案:
一、
     0  1   2   3   4   5   6
     TUE THU  WED FRI SUN SAT MON

二、
int EQUAL(BTREE T1,BTREE T2)
{
   if(!T1 && !T2)
     return 1;              /* 两棵二叉树均为空 */
   if(T1 && T2
     && T1->data==T2->data       /* 对应结点的数据相同 */
     && EQUAL(T1->lchild,T2->lchild)    /* 并且左子树等价 */
     && EQUAL(T1->rchild,T2->rchild))  /* 并且右子树等价 */
    return 1;
  return 0;               /* 二叉树不等价 */
}

三、
int TOPOTEST(TOPOVLink G[],vertype V[],int n)
{
  Elink *p;
  int i,k;
  for(i=0;i<n;i++){
    for(k=0;k<n;k++){
    if(G[k].vertex==V[i]){     /* 若顶点V[i]是G中的顶点 */
       if(G[k].indegree!=0)     /* 若顶点V[i]的入度不为0 */
        return 0;        /* 给定序列不是G的拓扑序列 */
       p=G[k].link;         /* 若顶点V[i]的入度为0 */
       while(p!=NULL){
        G[p->adjvex].indegree--;  /* 相关顶点的入度减1 */
        p=p->next;        /* p移到下一个边结点 */
       }
       break;            /* 测试序列的下一个顶点 */
     }
   }
   }
   return 1;              /* 给定序列是G的拓扑序列 */
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值