04年工硕数据结构试题及答案2

04年工硕数据结构试题及答案2,第1张

04年工硕数据结构试题及答案2,第2张

七、设带表头结点的双向链表的定义为
  typedef int ElemType;

  typedef struct dnode { file://双向链表结点定义

  ElemType data; file://数据

  struct dnode * lLink, * rLink; file://结点前驱与后继指针

  DblNode;

  typedef DblNode * DblList; file://双向链表

  试设计一个算法,改造一个带表头结点的双向链表,所有结点的原有次序保持在各个结点的右链域rLink中,并利用左链域lLink把所有结点按照其值从小到大的顺序连接起来。

  八、设有一个关键码的输入序列{ 55, 31, 11, 37, 46, 73, 63, 02, 07 ,

  (1)从空树开始构造平衡二叉搜索树,画出每加入一个新结点时二叉树的形态。若发生不平衡,指明需做的平衡旋转的类型及平衡旋转的结果。

  (2)计算该平衡二叉搜索树在等概率下的查找成功的平均查找长度和查找不成功的平均查找长度。

  九、下面是求连通网络的最小生成树的Prim算法的实现,中间有5个地方缺失,请阅读程序后将它们补上。

  const int MaxInt = INT_MAX; file://INT_MAX的值在中

  const int n = 6; file://图的顶点数,应由用户定义

  typedef int AdjMatrix[n>[n>; file://用二维数组作为邻接矩阵表示

  typedef struct file://生成树的边结点

  int fromVex, toVex; file://边的起点与终点

  int weight; file://边上的权值

  TreeEdgeNode;

  typedef TreeEdgeNode MST[n-1>; file://最小生成树定义

  void PrimMST ( AdjMatrix G, MST T, int rt ) {

  file://从顶点rt出发构造图G的最小生成树T,rt成为树的根结点

  TreeEdgeNode e; int i, k = 0, min, minpos, v;

  for ( i = 0; i < n; i++ ) file://初始化最小生成树T

  if ( i != rt ) {

  T[k>.fromVex = rt;

  T[k>.toVex = I ;

  T[k++>.weight = G[rt>;

  }

  for ( k = 0; k < n-1; k++ ) { file://依次求MST的候选边

  min = MaxInt ;

  for ( i = k; i < n-1; i++ ) file://遍历当前候选边集合

  if ( T.weight < min ) file://选具有最小权值的候选边

  { min = T.weight; minpos = i ; }

  if ( min == MaxInt ) file://图不连通,出错处理

  { cerr 《“Graph is disconnected!”《 endl; exit(1) ; }

  e = T[minpos>; T[minpos> = T[k> ; T[k> = e;

  v = T[k>.toVex;

  for ( i = k+1; i < n-1; i++ ) file://修改候选边集合

  if ( G[v>[T.toVex> < T.weight )

  T.weight = G[v>[T.toVex>;

  T.fromVex = v ;

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 04年工硕数据结构试题及答案2

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情