| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 956 人关注过本帖
标题:大家帮我看看这"棵"树怎么了
取消只看楼主 加入收藏
st_win
Rank: 2
等 级:论坛游民
帖 子:48
专家分:35
注 册:2010-9-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
大家帮我看看这"棵"树怎么了
运行赋值AB##C## 回车后出现 对话框 说是内存不能为读之类的问题 我该怎么办啊 求教了~~
程序代码:
#include<stdio.h>
#include<stdlib.h>
#define MAX_TREE_SIZE 15
#define NULL 0
typedef struct BitNode{        //节点结构
    char data;
    struct BitNode *lchirld,*rchirld;//左孩子,右孩子
}BitNode,*Bitree;
char ch;
int CreateBtree(Bitree T)
{

     ch=getchar();
    if(ch=='#') {T=NULL;}      //
 else{
     if(!(T=(Bitree)malloc(sizeof(BitNode)))) exit(0);//建立根节点
    

   T->data=ch; //访问根节
 CreateBtree(T->lchirld);//建立左子树
 printf("aaa");

 CreateBtree(T->rchirld);//建立右子树
 printf("dddd");

 }//else
 printf("ccc");

 return 0;
}//CreateBtree
void OrderTralversepre(Bitree T) 

{ // 前序遍历二叉树
    if(T==0) return ;
else{ printf("%c\n",T->data);
    OrderTralversepre(T->lchirld); //前序遍历左子树
    OrderTralversepre(T->rchirld); //前序遍历右子树
}//else

}//OrderTralversepre
void DistroyBitree(Bitree T)
{//销毁二叉树
    if(T==0) return ;
else {DistroyBitree(T->lchirld);//销毁左子树
      DistroyBitree(T->rchirld);//销毁右子树
}//else
      free(T);  //释放节点
}//DistroyBitree
 void main()

 {

 BitNode T;
printf("建立一个二叉树\n");

 CreateBtree(&T);

 printf("\n");
  OrderTralversepre(&T);//前序遍历二叉树
  printf("\n");
  DistroyBitree(&T);//销毁二叉树
  printf("success");

 }//main()



[ 本帖最后由 st_win 于 2010-9-21 16:38 编辑 ]
搜索更多相关主题的帖子: 对话框 我该怎么办 
2010-09-21 16:31
st_win
Rank: 2
等 级:论坛游民
帖 子:48
专家分:35
注 册:2010-9-19
收藏
得分:0 
版主,那个printf("aaa"); printf("ccc");这几个我是想看看程序是运行到哪里停止了,到遍历那就运行不下去了 我该怎么办?
2010-09-21 22:49
st_win
Rank: 2
等 级:论坛游民
帖 子:48
专家分:35
注 册:2010-9-19
收藏
得分:0 
以下是引用寒风中的细雨在2010-9-21 23:08:57的发言:

void main 中的 定义 BitNode T;

CreateBtree中的 if(!(T=(Bitree)malloc(sizeof(BitNode)))) exit(0);//建立根节点
联合起来看 就是问题  要注意
可是还是有点问题的 如我输入AB##C##应该是行如 A  的树,程序中根据设置的prinf("aaa")等应是 aaadddcccaaaaaadddccc但现在却是
                                            B C

cccaaacccaaa#cccddddcccddddccc 而且遍历中只有AC 并没有B 感觉是这有错误但实在不知道怎么解决,想了一个多小时没有思路~~是指针错误,还是怎样原因内存没有成功的建立空间.


[ 本帖最后由 st_win 于 2010-9-21 23:56 编辑 ]
2010-09-21 23:52
st_win
Rank: 2
等 级:论坛游民
帖 子:48
专家分:35
注 册:2010-9-19
收藏
得分:0 
我看大部分帖子上指针都是用二级指针引用的不是明白,试着改了改,这个只能运行到遍历AB没有C 想不同了
程序代码:
#include<stdio.h>
#include<stdlib.h>
#define MAX_TREE_SIZE 15
#define NULL 0
typedef struct BitNode{        //节点结构
    char data;
    struct BitNode *lchirld,*rchirld;//左孩子,右孩子
}BitNode,*Bitree;
char ch;
int CreateBtree(Bitree *T)
{

     ch=getchar();
    if(ch=='#') {*T=NULL;}      //
 else{
     if(!(*T=(Bitree)malloc(sizeof(BitNode)))) exit(0);//建立根节点
    

   (*T)->data=ch; //访问根节
 CreateBtree(&(*T)->lchirld);//建立左子树
 CreateBtree(&(*T)->rchirld);//建立右子树
 printf("dddd");

 }//else
 printf("ccc");

 return 0;
}//CreateBtree
void OrderTralversepre(Bitree *T) 

{ // 前序遍历二叉树
    if(*T==0) exit(0);
else{printf("hi");
      printf("%c",(*T)->data);
    OrderTralversepre(&(*T)->lchirld); //前序遍历左子树
    printf("uu");
    OrderTralversepre(&(*T)->rchirld); //前序遍历右子树
    printf("ii");
}//else

}//OrderTralversepre
void DistroyBitree(Bitree *T)
{//销毁二叉树
    printf("part3");
    if(*T==0) exit(0);
else {DistroyBitree(&(*T)->lchirld);//销毁左子树
      DistroyBitree(&(*T)->rchirld);//销毁右子树
}//else
       printf("part4");
      free(*T);  //释放节点
}//DistroyBitree
 void main()

 {

 Bitree T;
printf("建立一个二叉树\n");

 CreateBtree(&T);

 printf("\n");
  OrderTralversepre(&T);//前序遍历二叉树
  printf("\n");
  DistroyBitree(&T);//销毁二叉树
  printf("success");

 }//main()
2010-09-22 00:10
st_win
Rank: 2
等 级:论坛游民
帖 子:48
专家分:35
注 册:2010-9-19
收藏
得分:0 
以下是引用寒风中的细雨在2010-9-22 11:44:05的发言:

抱歉, 不是很理解你的意思。
我是说改完后的程序 运行后我要输入AB##C##回车的话赋值就应该完成了,可是改过后的情况是我还要在输入一个#才往下进行,而且经过遍历后没有打印B只打印了AC两个,怎么办啊还是不对啊几乎就是抄书上的写的.
2010-09-22 15:54
st_win
Rank: 2
等 级:论坛游民
帖 子:48
专家分:35
注 册:2010-9-19
收藏
得分:0 
以下是引用小心我人肉你在2010-9-23 08:50:54的发言:

又是一位把台机上的ghost xp安装光盘的经验复制到笔记本的,要知道,笔记本的驱动的适用范围比台机上小很多,所以驱动是有问题的。另外,T400最好装win7,原配就是win7啊。从你的cpu来看,你的T400还是高配机,象内置的磁盘加速功能都是只能在vista/win7上起作用的TIME:2010-7-5 19:20
你太强悍了,你咋知道的, win7 用不了VC6.0和SQL2000啊 所以用的是GHOST XP 我程序问题是以上原因?
2010-09-23 12:23
快速回复:大家帮我看看这"棵"树怎么了
数据加载中...
 
   



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

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