| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1922 人关注过本帖
标题:『求助』C语言实现二叉树基本操作
只看楼主 加入收藏
MrLZ
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-12-6
收藏
 问题点数:0 回复次数:2 
『求助』C语言实现二叉树基本操作
【实验内容与要求】
问题描述:采用二叉链表作为存储结构,完成二叉树的建立和遍历操作。
基本要求:
(1)基于先序遍历的构造算法。输入是二叉树的先序序列,但必须在其中加入虚结点以示空指针的位置。假设虚结点输入时用空格字符表示。
(2)利用中序顺序遍历所建的二叉树,将遍历结果打印输出。

我写的程序
#include<stdio.h>
#define NULL 0

struct BiTree
{char data;
struct BiTree *ld,*rd;};

CreateBiTree(BiTree *T)
{
char ch;
scanf(&ch);
if(ch==' ') t=NULL;
else
{
if(!(T=(BiTree*)malloc(sizeof(BiTree)))) exit()
T.data=ch;
CreatBiTree(T.ld);
CreatBiTree(T.rd);
}
return OK;
}

InOrderprint(BiTree T)
{
BiTree Stack[255];
int top=0;
Stack[top++]=T;
if(Stack[0].data==' ')
printf("The BiTree is NULL!");
else
while(top>=0)
{
for(;T.ld.data!=' ';)
{
Stack[top++]=T.ld;
T=T.ld;
}
top--;
printf("%c",&T.data);
if(T.rd.data==' ') top--;
else{T=t.rd; top--};;
}
}

main()
{
BiTree *T;
printf("Please input the data by PreOrder:");
CreateBiTree(T);
printf("\nThe BiTree in InOrder is:") ;
InOrderprint(*T)
}


编译时提示
CreateBiTree(BiTree *T)
这行声明有错
不解
请各位指教
=。=!
搜索更多相关主题的帖子: 二叉树 C语言 遍历 BiTree 结点 
2007-12-06 12:45
liweiqing
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2007-10-16
收藏
得分:0 
结点类型应该是struct BiTree才是!!!

岂能尽如人意,但求无愧于心.
2007-12-06 19:00
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
#include<stdio.h>
#define NULL 0

struct BiTree
{char data;
struct BiTree *ld,*rd;};

CreateBiTree(BiTree *T)
{
char ch;
scanf(&ch);//改为getch(ch)
if(ch==' ') t=NULL;//这个t改为大写
else
{
if(!(T=(BiTree*)malloc(sizeof(BiTree)))) exit()
T.data=ch;
CreatBiTree(T.ld);//CreateBiTree(T->ld)
CreatBiTree(T.rd);//CreateBiTree(T->rd);
}
return OK;
}

InOrderprint(BiTree T)//这个地方改为指针。BiTree *T
{
BiTree Stack[255];
int top=0;
++top;
Stack[top]=T;//
if(Stack[0].data==' ')这个只要if(!T)
printf("The BiTree is NULL!");
else
while(top>=0)     算了,自己写一下吧,while(T!=NULL&&top>0){while(T->ld!=NULL){Stack[top]=T;top++;T=T->ld;}
                                printf(T->data);
                                  if(T->rd)
                               { T=T->rd;
                                    }
                              else
                               {
                                   top--
                                }
                                }
{
for(;T.ld.data!=' ';)
{
Stack[top++]=T.ld;
T=T.ld;
}
top--;
printf("%c",&T.data);
if(T.rd.data==' ') top--;
else{T=t.rd; top--};;
}
}

main()
{
BiTree *T;//这里不能这样定义,因为在结构体没有定义BiTree为别名,所以在结构
下面加上一句,typedef struct BiTree BiTree//在这里BiTree *T 还要申请一下,

printf("Please input the data by PreOrder:");
CreateBiTree(T);
printf("\nThe BiTree in InOrder is:") ;
InOrderprint(*T)
}
啊,改了好长,也不知道对不对,各位在看看吧,
2007-12-06 22:28
快速回复:『求助』C语言实现二叉树基本操作
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038991 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved