地址、指针,二叉树

lcj20bc 2012-06-02 11:17:12
小弟对内存地址、指针之类的不是很懂,现在碰到个问题好像是地址错误之类的,我自己也弄了很久,搞不清楚,来请教各位大侠!
我弄的是一个二叉树的建立和遍历的小程序,简单代码如下:

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

typedef struct Node
{
char data;
struct Node * lchild;
struct Node * rchild;
}Btree;

void CreatBtree(Btree * root);
void Inorder(Btree * root);
void PreOrder(Btree * root);
void PostOrder(Btree * root);

void main()
{
Btree * root;
root=(Btree *)malloc(sizeof(Btree));

CreatBtree(root);
printf("中序遍历:\n");
Inorder( root);
printf("先序遍历:\n");
PreOrder(root);
printf("后序遍历:\n");
PostOrder(root);

}

void CreatBtree(Btree * root)
{
char n;
printf("输入数据: ");
fflush(stdin);
scanf("%c", &n);

if('*' == n)
{
root= NULL;
}
else
{
root=(Btree *)malloc(sizeof(Btree));
root->data=n;
CreatBtree( root->lchild);
CreatBtree( root->rchild);
}

}

void Inorder(Btree * root)
{
if(root != NULL)
{
Inorder( root->lchild);
printf(" %c ",root->data);
Inorder( root->rchild);
}

}

void PreOrder(Btree * root)
{
if(root != NULL)
{
printf("%c ",root->data);
PreOrder( root->lchild);
PreOrder(root->rchild);
}
}

void PostOrder(Btree * root)
{
if(root != root)
{
PreOrder(root->lchild);
PreOrder( root->rchild);
printf("%c ",root->data);
}
}

程序用到的是递归调用,运行时出现一个窗口提示,说的是某内存不能“read”!最开始我申明了一个指针root,当调试的时候root显示的值是存放指针的地址么?? 还有推荐一些学习地址指针方面的书, 呵呵,小弟谢谢各位打下了!
...全文
93 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
e3internet 2012-06-03
  • 打赏
  • 举报
回复
是的,我只是对这段能跑起来。提供一种修改的方法。
proorck6 2012-06-03
  • 打赏
  • 举报
回复
我也很讨厌那个不能read,write的错误。
W170532934 2012-06-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

1楼正解,
要让其成功把void CreatBtree(Btree * root);改成void CreatBtree(Btree * &root);
[/Quote]
不过我不推荐使用指针的引用这个。因为C里面没有引用,最好是指针的指针比较严格。
void CreatBtree(Btree ** root);
e3internet 2012-06-02
  • 打赏
  • 举报
回复
1楼正解,
要让其成功把void CreatBtree(Btree * root);改成void CreatBtree(Btree * &root);
lcj20bc 2012-06-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
形参不能改变实参的值,哪怕实参传的是指针。想要改变指针的值,可通过指向指针的指针。
[/Quote]

现在被指针弄得有些糊涂了,高手指教!
order_c 2012-06-02
  • 打赏
  • 举报
回复
形参不能改变实参的值,哪怕实参传的是指针。想要改变指针的值,可通过指向指针的指针。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧