c语言-写了一个先序创建二叉链表的程序,但是怎么都不能成功

问题描述

写了一个先序创建二叉链表的程序,但是怎么都不能成功

源代码:
#include
#include
#include

#define TElemtype char
#define Status int
#define OK 1
#define ERROR 0
typedef struct BiTNode
{
TElemtype data;
struct BiTNode lchild,*rchild;
}BiTNode;
typedef BiTNode
BiTree;

Status CreateBiTree(BiTree & T)
{
TElemtype temp;
scanf("%c",&temp);
if(temp=='0')
{
T=NULL;
return OK;
}

else
{
T=(BiTree)malloc(sizeof(BiTNode));
if(!T)
{
printf("NO MEMORY!
");
return ERROR;
}
T->data=temp;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return OK;
}

Status PreOrderTraverse(BiTree T)
{
if(T)
{
printf("%c
",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
else return ERROR;
return OK;
}

/*Status InOrderTraverse(BiTree *T)
{

}*/
int main()
{
printf("Begin to input character:
");
BiTree T;
CreateBiTree(T);
printf("OK
");
PreOrderTraverse(T);

getch();
return 0;
}
总是只能不停地输入,无法结束

麻烦各位看一下,谢谢!

解决方案

 #include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define TElemtype char
#define Status int
#define OK 1
#define ERROR 0
typedef struct BiTNode
{
TElemtype data;
struct BiTNode *lchild,*rchild;
}BiTNode;
typedef BiTNode* BiTree;

Status CreateBiTree(BiTree & T)
{
TElemtype temp;
scanf("%c",&temp);
if(temp=='0')
{
T=NULL;
return OK;
}

else
{
T=(BiTree)malloc(sizeof(BiTNode));
if(!T)
{
printf("NO MEMORY!
");
return ERROR;
}
T->data=temp;
T->lchild=NULL; //添加
T->rchild=NULL; //添加
if (CreateBiTree(T->lchild) == OK) return OK; //修改
if (CreateBiTree(T->rchild) == OK) return OK; //修改
}
return OK;
}

Status PreOrderTraverse(BiTree T)
{
if(T)
{
printf("%c
",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
else return ERROR;
return OK;
}

/*Status InOrderTraverse(BiTree *T)
{

}*/
int main()
{
printf("Begin to input character:
");
BiTree T;
CreateBiTree(T);
printf("OK
");
PreOrderTraverse(T);

getch();
return 0;
}

解决方案二:

二叉链表的创建

时间: 2024-10-08 16:41:33

c语言-写了一个先序创建二叉链表的程序,但是怎么都不能成功的相关文章

c语言-C语言写的一个实时时间小程序,用的多线程屏幕问题

问题描述 C语言写的一个实时时间小程序,用的多线程屏幕问题 这是一个子程序,我想把这个调试好了加到另一个工程里,因为要实时显示时间,所以用到了多线程,现在的问题是子线程执行的时候 光标就移动到这行后面,主线程再打印什么东西的时候,屏幕显示就乱套了,怎么能解决啊,下面是代码片段. void real_time(int X,int Y) //显示时间的函数,用到了光标移动函数,X,Y表示坐标 { HideCursor(10, 0); //隐藏光标函数 hout = GetStdHandle(STD_

图片-用c语言写出一个行李托运问题

问题描述 用c语言写出一个行李托运问题 解决方案 请教一个C语言问题关于<c语言的一个小问题>的补充 解决方案二: c语言行李托运问题.

c语言-已知二叉树的中序遍历序列与层次遍历序列分别存于数组A[1-n] B[1-n]中,建立二叉树的二叉链表。

问题描述 已知二叉树的中序遍历序列与层次遍历序列分别存于数组A[1-n] B[1-n]中,建立二叉树的二叉链表. 已知二叉树的中序遍历序列与层次遍历序列分别将值存于数组A[1-n].B[1-n]中,请编程建立二叉树的二叉链表. 二叉树结点定义 typedef struct { Elemtype data; BiNode* lchild,rchild; }BiNode,*BiTree; 解决方案 http://www.zybang.com/question/23e04267bb862ea67197

算法设计-孩子兄弟法(二叉链表表示法)写程序

问题描述 孩子兄弟法(二叉链表表示法)写程序 按图片上的要求完成编程,只能用C或C++语言编写,代码发送到1575366373@qq.com 解决方案 我把代码按要求写出来了你能帮我修改吗? 解决方案二: class Node { public: Node * parent; LinkedList children; string Name; ... } 就是用两个字段,一个是父节点,一个是子节点集合. 解决方案三: 程序中的四元数表示法 解决方案四: 这个虽然,简单,但是也需要设计一下的,虽然

Java创建二叉搜索树,实现搜索,插入,删除操作

Java实现的二叉搜索树,并实现对该树的搜索,插入,删除操作(合并删除,复制删除) 首先我们要有一个编码的思路,大致如下: 1.查找:根据二叉搜索树的数据特点,我们可以根据节点的值得比较来实现查找,查找值大于当前节点时向右走,反之向左走! 2.插入:我们应该知道,插入的全部都是叶子节点,所以我们就需要找到要进行插入的叶子节点的位置,插入的思路与查找的思路一致. 3.删除: 1)合并删除:一般来说会遇到以下几种情况,被删节点有左子树没右子树,此时要让当前节点的父节点指向当前节点的左子树:当被删节点

写了一个排查文件是否在数据库存在的程序但是运行很慢

问题描述 在一个文件夹中遍历所有文件名,判断是否存在于数据库如果存在就移动到truefilepath文件夹没有存在移动到false文件夹但是运行时间很长姚156秒才能运行完.求大神帮助,史什么地方的操作导致的程序运行缓慢'/判断是否受信PrivateFunctionExecuteTableshoukai(ByValfolderspec)AsBooleanDimvlSqlAsStringDimvlDataTableAsDataTableDimvlCheck1AsString=String.Empt

java写的服务端和c语言写的客户端的socket通信问题

问题描述 近遇到一个问题,同学用java语言写了一个服务端,我这边用c语言写了一个客户端,服务端先启动后客户端启动,连接成功,然后客户端取出本地的MAC地址传送给服务端,服务端收到后将这个MAC地址作为KEY,把这次的通信通道作为VALUE存入到定义好的一个map中.然后服务端从map中找到这个通道,并使用这个通道给客户端发消息,第一次发送成功.但是第二次想给客户端发送消息时,要根据KEY从map中取通道的时候,取出来的通道却为NULL,这是怎么回事呢???另外,在服务端的机子上,用telnet

业余爱好,非jiava开发人员,自学java有半年多,写了一个UI计算器

问题描述 [size=16px]业余爱好,非jiava开发人员,出于想转行的心态,自学java有半年多,刚写了一个UI计算器,用了一部分awt内容,大部分都是用if...else,while结构,虽然可以实现连续加减乘除.简单混合运算,可一看自己的程序里到处是if...else.while,我就瞬间觉得太低端了,总觉得不怎么样,请问我这个想法对吗?各位大神们求解啊!! 解决方案 解决方案二:我个人觉得ifwhile是最nb的,如果代码里面密密麻麻都是ifwhile,而且不出错,说明你很nb了解决

C# .net3.5写的一个exe应用,把bin\debug拷贝到另一台电脑无法使用,问题事件名称CLR20r3.问题签名01,问题签名02...

问题描述 用C#语言写的一个exe应用,用的.net3.5,框架,自己本机电脑下,把bindebug拷到另一个目录,可以运行,但拷贝到别的电脑却不行,那台电脑.net3.5和4都有,都是win7系统唯一疑点可能是管理员权限问题,因为是某大型公司内部的电脑,只允许上传文件到电脑,不允许拷贝出来,而且无法访问大多数网站,聊天工具也不是扣扣,而是一全套微软的东西,限制相当严,不知是不是这个原因,请有过类似经验或知晓的大神留步.错误截图如下: 解决方案 解决方案二:用Log把错误消息输出来看看!解决方案