两个程序大家帮忙看下结果是什么
(一)void algorithm(BinTree T){
Stack S;BinTree p,q;
if(T==NULL) return;
InitStack(S);
p=T;
do {
while(p){ //(1)
push(S,p);
if(p->lchild) p=p->lchild;
else p=p->rchild;
}
while(!StackEmpty(S)&&q=getTop(S)&&q->rchild==p)
{
p=Pop(S);
printf("%c",p->data);
}
if(!StackEmpty(S)) //(2)
{
q=getTop(S);
p=q->rchild;
}
}while(!StackEmpty(S));
}
1、标号(1)所对应while的功能
2、标号(1)所对应if的功能
3、算法运行结果
4、说明整个算法的功能
(二)void program(int a[],int n,int max)
{
int *temp=new int[n];
int *count=new int[max];
for(int i=0;i<n;i++)
temp[i]=a[i];
for(int i=0;i<max;i++)
count[i]=0;
for(int i=0;i<n;i++) //(1)
count[a[i]]=count[a[i]]+1;
for(int i=1;i<max;i++) //(2)
count[i]=count[i-1]+count[i];
for(int i=n-1;i>=0;i--) //(3)
a[--count[temp[i]]=temp[i];
}
整数数列7,3,8,9,6,1,8,1,2,7,3,4,5存在arr中 program(arr,14,10)
执行(1)语句之后count状态是?
执行(2)语句之后count状态是?
执行(3)语句之后a状态是?
此算法时间复杂度是?
适合场合?