(10分)阅读下列程序,说明下述程序的主要功能以及函数p1、p2和p3 的功能,写出程序运行的结果。
#include "stdio.h"
#include "malloc.h"
#include "conio.h"
#include "math.h"
typedef struct BiTNode
{
int data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
int initFlag = 0;
BiTree p1(BiTree &T, int initNum[])
{
if (initNum[initFlag] = 0 || initFlag >= 17)
{
T = NULL;
initFlag++;
}
else
{
T = (BiTree)malloc(sizeof(BiTNode));
T->data = initNum[initFlag];
initFlag++;
T->rchild = p1(T->rchild, initNum);
T->lchild = p1(T->lchild, initNum);
}
return T;
}
int num[8];
int x = 0;
void p2(BiTree &T.int num[])
{
if (T != NULL)
{
p2(T -> lchild, num);
printf("%d", T -> data);
num[x] = T->data;
x++;
p2(T->rchild, num);
}
}
void p3(int num[], int l, int h)
{
int i = l;
int j = h;
int temp = num[i];
if (l < h)
{
while (i < j)
{
while (num[j] <= temp && i < j)
{
j--;
}
num[i] = num[j];
while (num[i] >= temp && i < j)
i++;
num[j] = num[i];
}
num[i] = temp;
p3(num, l, i - 1);
p3(num, j + 1, h);
}
else
{
return;
}
}
void main()
{
BiTree t;
int initNum[24] = {10, 2, 7, 0, 0, 18, 30, 0, 0, 0, 46, 0, 8, 60, 0, 0, 0};
int num[8];
t = p1(t, initNum);
p2(t, num);
printf("\n");
p3(num, 0, 7);
for (int i = 0; i < 8; i++)
{
printf("%d", num[i]);
}
getch();
}
查看答案和解析【26考研辅导课程推荐】:26考研集训课程,VIP领学计划,26考研VIP全科定制套餐(公共课VIP+专业课1对1) , 这些课程中都会配有内部讲义以及辅导书和资料,同时会有教研教辅双师模式对大家进行教学以及督学,并配有24小时答疑和模拟测试等,可直接咨询在线客服老师领取大额优惠券。
启航教育热门私房课
MORE小班面授 名额有限 抢先体验
编辑推荐
最新内容
姓名
手机号