举例:创建二叉树,参数用(BiTNode **root)和(BiTNode &root)的区别
分析:前面的是传递的二重指针,后面的是传递指针的引用,效果是一样的,就是修改一级指针的值,让这个指针指向新的内存空间。。
1)二级指针作为函数参数
- void CreateBiTree(BiTNode **root) //二级指针作为函数参数
- {
- char ch; //要插入的数据
- scanf(" %c", &ch);
- //cin>>ch;
- if(ch=='#')
- *root = NULL;
- else
- {
- *root = (BiTNode *)malloc(sizeof(BiTNode));
- (*root)->data = ch;
- printf("请输入%c的左孩子:",ch);
- CreateBiTree(&((*root)->lchild));
- printf("请输入%c的右孩子:",ch);
- CreateBiTree(&((*root)->rchild));
- }
- }
2)引用类型作为参数
- void CreateBiTree(BiTree &root)
- {
- char ch;
- cin>>ch;
- if(ch=='#')
- root=NULL;
- else
- {
- root=(BiTNode*)malloc(sizeof(BiTNode));
- root->data=ch;
- cout<<"左孩子:"<<endl;
- CreateBiTree(root->lchild);
- cout<<"右孩子:"<<endl;
- CreateBiTree(root->rchild);
- }
- }