地址、指针,二叉树
小弟对内存地址、指针之类的不是很懂,现在碰到个问题好像是地址错误之类的,我自己也弄了很久,搞不清楚,来请教各位大侠!
我弄的是一个二叉树的建立和遍历的小程序,简单代码如下:
#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显示的值是存放指针的地址么?? 还有推荐一些学习地址指针方面的书, 呵呵,小弟谢谢各位打下了!