此程序为二叉树查找程序,其中中序原来为递归中序遍历,我想改为非递归中序遍历,但是主函数和结构不知如何加上栈,运行时显示 错误:
警告? temp.c 4: 'NULL'的宣告是不相等的
错误 temp.c 20: 说明缺少';'
错误 temp.c 56: 未定义的符号'P' 在函数
错误 temp.c 65: 说明语法错误
我知道就错在结构体和p 在主函数定义,但是我不知增加什么语句,请各位给点意见~~!谢谢!
typedef struct
{
Bitree Elem[maxsize];
int top;
}p;
void inorder(BiTree bt) 中序遍历
{
BiTree stack[MAXSIZE],p=bt;
int top=0;
while(p!=NULL||top>0)
if(P!=NULL)
{ stack[++top]=p;
p=p->lchild;
}
else{
p=stack[top--];
printf("%d",p->data);
p=p->rchild;
}
main()
{ char ch; struct stack *P;
KeyType key;
BiTree bt,s;
int i=0;
printf("\nPlease input number(0:end)\n");
scanf("%d\n",&key);
bt=NULL;
while (key!=0)
{
s=(BiTree)malloc(sizeof(BiTNode));
(s->data).key=key;s->lchild=s->rchild=NULL;
insertBST(&bt,s);
scanf("%d",&key);
}
printf("\nCreate is successful\n");
/*中序遍历已建立的二叉排序树*/
inorder(bt);
/*二叉排序树的查找,可多次查找,并输出查找的结果*/
do {
printf("\nInput the key you want to search:");
scanf("%d",&key);
s=searchBST(bt,key);
if (s!=NULL) printf("\nsuccess,the value is %d ",s->data.key);
else printf("\nunsuccess");
printf("\ncontinue(y/n):\n");
ch=getch();
}
while (ch=='y' || ch=='Y') ;
}