数据结构期中考试归纳

《数据结构期中复习归纳》

一、函数题
求二叉树的高度
函数接口定义:
int GetHeight( BinTree BT );
其中BinTree结构定义如下:
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
要求函数返回给定二叉树BT的高度值。
裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>

typedef char ElementType;
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};

BinTree CreatBinTree(); /* 实现细节忽略 */
int GetHeight( BinTree BT );

int main()
{
BinTree BT = CreatBinTree();
printf("%d\n", GetHeight(BT));
return 0;
}
/* 你的代码将被嵌在这里 */
输出样例(对于图中给出的树):

代码如下:

int GetHeight( BinTree BT )
{
int Ld,Rd;
if(BT == NULL)
{
return 0;
}
else
{
Ld = GetHeight(BT->Left);
Rd = GetHeight(BT->Right);
return (Ld>Rd?Ld:Rd)+1;
}
}

二叉树的遍历
本题要求给定二叉树的4种遍历。

  1. 函数接口定义:
  2. void InorderTraversal( BinTree BT );
  3. void PreorderTraversal( BinTree BT );
  4. void PostorderTraversal( BinTree BT );
  5. void LevelorderTraversal( BinTree BT );
  6. 其中BinTree结构定义如下:
  7. typedef struct TNode *Position;
  8. typedef Position BinTree;
  9. struct TNode{
  10. ElementType Data;
    
  11. BinTree Left;
    
  12. BinTree Right;
    
  13. };
  14. 要求4个函数分别按照访问顺序打印出结点的内容,格式为一个空格跟着一个字符。
  15. 裁判测试程序样例:
  16. #include <stdio.h>
  17. #include <stdlib.h>
  18. typedef char ElementType;
  19. typedef struct TNode *Position;
  20. typedef Position BinTree;
  21. struct TNode{
  22. ElementType Data;
    
  23. BinTree Left;
    
  24. BinTree Right;
    
  25. };
  26. BinTree CreatBinTree(); /* 实现细节忽略 */
  27. void InorderTraversal( BinTree BT );
  28. void PreorderTraversal( BinTree BT );
  29. void PostorderTraversal( BinTree BT );
  30. void LevelorderTraversal( BinTree BT );
  31. int main()
  32. {
  33. BinTree BT = CreatBinTree();
    
  34. printf("Inorder:");    InorderTraversal(BT);    printf("\n");
    
  35. printf("Preorder:");   PreorderTraversal(BT);   printf("\n");
    
  36. printf("Postorder:");  PostorderTraversal(BT);  printf("\n");
    
  37. printf("Levelorder:"); LevelorderTraversal(BT); printf("\n");
    
  38. return 0;
    
  39. }
  40. /* 你的代码将被嵌在这里 */
  41. 输出样例(对于图中给出的树):
  42. Inorder: D B E F A G H C I
  43. Preorder: A B D F E C G H I
  44. Postorder: D E F B H G I C A
  45. Levelorder: A B C D F G I E H

代码如下:

void InorderTraversal( BinTree BT )
{
if(BT)
{
if(BT->Left)
InorderTraversal(BT->Left);
printf(" %c",BT->Data);
if(BT->Right)
InorderTraversal(BT->Right);
}
}
void PreorderTraversal( BinTree BT )
{
if(BT)
{
printf(" %c",BT->Data);
if(BT->Left)
PreorderTraversal(BT->Left);
if(BT->Right)
PreorderTraversal(BT->Right);
}
}
void PostorderTraversal( BinTree BT )
{
if(BT)
{
if(BT->Left)
PostorderTraversal(BT->Left);
if(BT->Right)
PostorderTraversal(BT->Right);
printf(" %c",BT->Data);
}
}
void LevelorderTraversal( BinTree BT )
{
BinTree que[101],t;
int head=0,rear=0;
if(BT){
que[rear++]=BT;
while(head!=rear)
{
t=que[head++];
printf(" %c",t->Data);
if(t->Left)
que[rear++]=t->Left;
if(t->Right)
que[rear++]=t->Right;
}
}
}

求采用邻接矩阵作为存储结构的有向图各顶点的出度
函数接口定义:
函数接口为:
void dgree(MGraph G);
• 1
• 2
G为采用邻接矩阵作为存储结构的有向图
裁判测试程序样例:
#include <stdio.h>
#define MVNum 100 //最大顶点数
typedef struct{
char vexs[MVNum]; //存放顶点的一维数组
int arcs[MVNum][MVNum]; //邻接矩阵
int vexnum,arcnum; //图的当前顶点数和边数
}MGraph;
void dgree(MGraph G);
void CreatMGraph(MGraph G);/ 创建图 */
int main()
{
MGraph G;
CreatMGraph(&G);
dgree(G);
return 0;
}
void CreatMGraph(MGraph *G)
{
int i,j,k;
scanf("%d%d",&G->vexnum,&G->arcnum);
getchar();
for(i=0;ivexnum;i++)
scanf("%c",&G->vexs[i]);
for(i=0;ivexnum;i++)
for(j=0;jvexnum;j++)
G->arcs[i][j]=0;
for(k=0;karcnum;k++)
{
scanf("%d%d",&i,&j);
G->arcs[i][j]=1;
G->arcs[j][i]=1;
}
}

/* 请在这里填写答案 */
输入样例:
第一行给出图的顶点数n和边数e。第二行给出n个字符,表示n个顶点的数据元素的值。后面是e行,给出每一条边的两个顶点编号。
4 5
ABCD
0 1
0 2
1 2
1 3
2 3

输出样例:
输出n个顶点的元素值,顶点的数据类型为字符型。以及各顶点的度值
A:2
B:3
C:3
D:2

代码如下:

void outdegree(MGraph G)
{
for(int i = 0; i < G.vexnum; i++)
{
int c = 0;
for(int j = 0; j < G.vexnum; j++)
if(G.arcs[i][j] == 1)
c++;
printf("%c:%d\n",G.vexs[i],c);
}
}

二、程序填空题

判断题

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zouchengzhi1021/article/details/109771295