,其类型定义如下:
typedef struct NodeType {
DataType data;
struct NodeType *lchild,*rchild;
}BinTNode,*BinTree;
阅读算法F32,并回答下列问题:
(1)对于如图所示的二叉树,画出执行算法f32的结果;
(2)简述算法f32的功能。
BinTree f32(BinTree bt1)
{
BinTree bt2;
if(bt1==NULL)
bt2=NULL;
else {
bt2=(BinTNode *)malloc(sizeof(BinTNode));
bt2->data=bt1->data;
bt2->rchild=f32(bt1->lchild);
bt2->lchild=f32(bt1->rchild);
}
return bt2;
}
(1)
(2)
33.假设有向图采用邻接表表示法,其定义如下:
typedef struct {
VertexNode adjlist[MaxVertexNum];
int n,e; //图的当前顶点数和弧数
} ALGraph; //邻接表类型
其中顶点表结点VertexNode结构为:
边表结点EdgeNode结构为:
下列算法f33的功能是,对以邻接表表示的有向图进行拓扑排序。
(1)阅读算法f33,并在空缺处填入
合适的内容,使其成为一个完
整的算法;
(2)对于如图所示的邻接表,将执
行算法f33后的topo[ ]结果填入
给定的数组中。
void f33(ALGraph G, int topo [ ]){
int i,j,k,count=0;
int indegree[MaxVertexNum];
EdgeNode *p; //p为指向边表结点的指针
Queue Q; //Q为队列
FindIndegree(G, indegree); //求各顶点的入度,并置于入度向量indegree
InitQueue(&Q);
for(i=0;i<G.n