搞了好久终于编译成功了!!!
在这里最大的问题是字符的输入输出问题,记录一下!!
-
关于单个字符的输入问题:
一开始用了scanf ,搞不明白然后就网上查了一下,改用了 getchar()。getchar()使用的时候要注意输入完毕后敲回车显示结果的时候【回车键也是会被读入的!!】所以这里经过建议,选择了多加一个getchar()在最后用作接收回车键 -
单个字符输入时使用的控制符时 “%c”;字符串的是"%s"
#include <stdio.h>
#include <malloc.h>
#include <string.h>
typedef struct BTNode
{
char data;
struct BTNode *left, *right;
}BTNode;
BTNode *creat_tree2()
{
BTNode *tree = NULL;
char a;
char b;
char c;
int i = 1;
printf("请输入第%d组三元组序列", i);
a=getchar();
printf("a=%c\n", a);
b=getchar();
printf("b=%c\n", b);
c=getchar();
printf("c=%c\n", c);
getchar();
if(a == '^')
{
tree = (BTNode *)malloc(sizeof(BTNode));
tree->data = b;
tree->left = NULL;
tree->right = NULL;
BTNode *p;
BTNode *qu[100];
int front = -1, rear = -1;
qu[++rear] = tree;
i++;
printf("请输入第%d组三元组序列", i);
a=getchar();
b=getchar();
c=getchar();
getchar();
while (front != rear && a != '^' && b != '^')
{
p = qu[++front];
while (a == p->data)
{
if (c == 'L')
{
p->left = (BTNode *)malloc(sizeof(BTNode));
p->left->data = b;
p->left->left = NULL;
p->left->right = NULL;
qu[++rear] = p->left;
}
else if(c == 'R')
{
p->right = (BTNode *)malloc(sizeof(BTNode));
p->right->data = b;
p->right->left = NULL;
p->right->right = NULL;
qu[++rear] = p->right;
}
i++;
printf("请输入第%d组三元组序列", i);
a=getchar();
b=getchar();
c=getchar();
getchar();
}
}
}
return tree;
}
char print(BTNode *bt)
{
if (bt!=NULL)
{
printf ("%c", bt->data);
print(bt->left);
print(bt->right);
}
}
int main()
{
BTNode *tree = creat_tree2();
print(tree);
return 0;
}