求高手指导如何做操作界面(数据结构实验——二叉树)
主函数:
void main()
{
int no;
BTNode *b,*p,*lp,*rp;
CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))");
printf("请输入操作序号:\n1:输出二叉树\n2:输出H结点的左右孩子结点值\n3:输出二叉树的深度\n4:输出二叉树的宽度\n5:输出二叉树的结点个数\n6:输出二叉树的叶子结点个数\n7:结束\n");
scanf("%d",&no);
while(1)
{
switch(no)
{
case 1:
printf("二叉树为:\n");DispBTNode(b);break;
case 2:
{
printf("H结点的左右孩子结点值为:\n");
p=FindNode(b,'H');
if (p!=NULL)
{
lp=LchildNode(p);
if (lp!=NULL)
printf("左孩子为%c\n ",lp->data);
else
printf("无左孩子\n ");
rp=RchildNode(p);
if (rp!=NULL)
printf("右孩子为%c\n",rp->data);
else
printf("无右孩子\n ");
}
}break;
case 3:
printf("二叉树的深度为:%d\n",BTNodeHigh(b));break;
case 4:
printf("二叉树的宽度为:%d\n",BTWidth(b));break;
case 5:
printf("二叉树的结点个数为:%d\n",Nodes(b));break;
case 6:
printf("二叉树的叶子结点个数为:%d\n",LeafNodes(b));break;
case 7:
return 1;
}
}
}
调试发现是死循环,好像break函数没起作用,是哪里有错,请指教!不胜感激
[解决办法]
把scanf("%d",&no);也要放到while里面