sjdjd活宝 sjdjd活宝
关注数: 11 粉丝数: 101 发帖数: 416 关注贴吧数: 8
请教一个问题,这问题困扰我好几天了。 先上代码: #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define OVERFLOW -1typedef char TElemType; typedef int Status;typedef struct BiTNode { TElemType data; struct BiTNode *lChild, *rChild; }BiTNode, *BiTree;void printMenu(); Status createBiTree(BiTree &T);int main() { BiTree T; int runFlag = 1; int num; while (runFlag) { do { printMenu(); scanf_s("%d", &num); if (num < 0 || num>1) printf("菜单号输入错误,请重新输入。\n"); } while (num < 0 || num>1); switch (num) { case 0: { runFlag = 0; printf("程序已退出。\n"); break; } case 1: { printf("请输入二叉树结点值:"); if (createBiTree(T)) printf("创建二叉树成功。\n"); else printf("创建二叉树失败。\n"); break; } } } //printf("请输入二叉树结点值:"); //if (createBiTree(T)) // printf("创建二叉树成功。\n"); //else // printf("创建二叉树失败。\n"); return 0; }void printMenu() { printf("---------二叉树的基本操作---------\n"); printf("---------1-创建二叉树-------------\n"); printf("---------0-退出程序---------------\n"); printf("---------请选择菜单号(0-1):-------\n"); }Status createBiTree(BiTree &T) { char ch = getchar(); if (ch == ' ') T = NULL; else { if (!(T = (BiTNode*)malloc(sizeof(BiTNode)))) exit(OVERFLOW); T->data = ch; createBiTree(T->lChild); createBiTree(T->rChild); } return OK; } 先序输入二叉树结点值的时候,比如输入:ABD空格空格E空格空格C空格F空格空格 运行注释掉的代码这样输入结点值就创建二叉树成功了,但在运行case语句中代码时要在最后多输入一个空格才提示创建二叉树成功,为什么会出现这种差异呢?望路过的帅哥美女能够指点一下。
1 下一页