二叉树的创建(一二级指针,无参)
最近在学习写二叉树和链表。对二级指针和一级指针的思考和理解,给大家提供一些参考,新手一枚,有问题请指正。。
指针定义
*通俗点来说,指针就是地址,地址就是指针。指针可以理解为一种数据类型和其他数据类型,如int、float、一样,是存放数据的一种类型。只不过存放的是内存中的地址罢了。例如:int i ,这个变量,内存中给它开了一个房间,房间的编号为110(注意内存中不是这样的地址,方便理解)。这个编号就是它在内存中的地址。你可以向这个房间里放数字,而int w,这个指针则专门存放地址(编号)的。其他的也是如此。
如果知道了一级指针,就不难理解二级指针。如果说指针存放变量的地址,那么,二级指针就存放一级指针的地址。也就是,地址的地址。
函数定义
函数我的理解是将一部分要实现的内容封装在一个空间里,以后你要用时,可以直接拿来用,而不用在重新写了。但函数有其自身的一些特点,函数在被调用时,内存为其开辟一块空间,在调用完后,空间就被清除了。所以这也就导致了在函数无法对变量的值直接修改,需要对其内存中地址所存的值进行修改。另外在给函数传参时,也要注意,有两种不同情况:
第一种:传参为一种变量的形式,这种情况下,相当于将实参copy了一下,形参相当于实参的副本,但函数运行结束后,形参也消失了。并不能改变实参的值,可以参考两个数交换的函数例子。
第二种:传指针或地址的方式,这种方式形参接收一个地址,形参也指向了这个地址所代表的内存。函数运行结束后,形参指向消失。
一级二级指针的实例应用(二叉树的建立)
二叉树的建立有很多种方法,但其本质来说都差不太多,无非是通过一定的算法来进行构造。
我们来看一下先序构造(采用递归)的几种方法:
首先是结构体:
typedef struct BTNode
{
char data[25]; //数据域s
BTNode * pLchild;// 构造左孩子
BTNode * pRchild;// 构造右孩子
}*Tree;
1.无参构造
BTNode * CreatBTree()
{
int i;
char date[10]={
0};
BTNode * d;//结点
printf("输入数据\n");
scanf("%s",date);
i