typedef struct BitNode  
{  
    char value;  
    BitNode *lchild,*rchild;    
}BitNode,*BiTree;

void CreatTree(BitNode* &root,char *pre,int l1,int r1,char *in,int l2,int r2)  ;

/*   *&代表什么?  //https://zhidao.baidu.com/question/2266744263935050308.html

这是C++的语法写法,&在形参中表示“引用”实参,
LNode * &lst ;  中LNode * 是个整体,表示变量类型是LNode类指针, &lst中的&表明引用实参,即代表实参的一个别名。   
标准C是不支持这种写法的。

追问

&不是取地址符吗? 引用参数是什么意思

追答

&在变量定义区,表示引用,要注意它的用法,
&在变量操作区,表示取地址符,如:

int x=10, *p=&x ;  //这里&作用在x上, 是取地址符
int &x  ;   //引用是C++引入的一个新特性,你要学的不是C++,则上述代码你是搞不懂的。 这里的&就表示引用。 一般这种形式会在形参中出现。

LNode * &lst ;  中LNode * 是个整体,表示变量类型是LNode类指针, &lst中的&表明引用实参,即代表实参的一个别名。 操作引用变量就相当于操作实参变量

*/

利用前序和中序求二叉树(源代码):

    1.  
      #include <iostream>
    2.  
      #include <cstdio>
    3.  
      #include <cstdlib>
    4.  
      #include <cstring>
    5.  
      using namespace std;;
    6.  
       
    7.  
      const int N=31;
    8.  
       
    9.  
       
    10.  
       
    11.  
      typedef struct BitNode
    12.  
      {
    13.  
      char value;
    14.  
      BitNode *lchild,*rchild;
    15.  
      }BitNode,*BiTree;
    16.  
       
    17.  
      /* *&代表什么?
    18.  
       
    19.  
      这是C++的语法写法,&在形参中表示“引用”实参,
    20.  
      LNode * &lst ; 中LNode * 是个整体,表示变量类型是LNode类指针, &lst中的&表明引用实参,即代表实参的一个别名。
    21.  
      标准C是不支持这种写法的。
    22.  
       
    23.  
      追问
    24.  
       
    25.  
      &不是取地址符吗? 引用参数是什么意思
    26.  
       
    27.  
      追答
    28.  
       
    29.  
      &在变量定义区,表示引用,要注意它的用法,
    30.  
      &在变量操作区,表示取地址符,如:
    31.  
       
    32.  
      int x=10, *p=&x ; //这里&作用在x上, 是取地址符
    33.  
      int &x ; //引用是C++引入的一个新特性,你要学的不是C++,则上述代码你是搞不懂的。 这里的&就表示引用。 一般这种形式会在形参中出现。
    34.  
       
    35.  
      LNode * &lst ; 中LNode * 是个整体,表示变量类型是LNode类指针, &lst中的&表明引用实参,即代表实参的一个别名。 操作引用变量就相当于操作实参变量
    36.  
       
    37.  
       
    38.  
       
    39.  
      */
    40.  
       
    41.  
      void CreatTree(BitNode* &root,char *pre,int l1,int r1,char *in,int l2,int r2)
    42.  
      {
    43.  
      if(l1<=r1&&l2<=r2)
    44.  
      {
    45.  
      int key=pre[l1];
    46.  
      int midIndex=-1;
    47.  
      for(int i=l2;i<=r2;i++)
    48.  
      {
    49.  
      if(in[i]==key)
    50.  
      {
    51.  
      midIndex=i;
    52.  
      break;
    53.  
      }
    54.  
      }
    55.  
      root=(BitNode *)malloc(sizeof(BitNode));
    56.  
      root->value=key;
    57.  
      root->lchild=NULL;
    58.  
      root->rchild=NULL;
    59.  
      int llen=midIndex-l2;
    60.  
      CreatTree(root->lchild, pre, l1+1, l1+llen, in, l2, midIndex-1);
    61.  
      CreatTree(root->rchild, pre, l1+llen+1, r1, in, midIndex+1, r2);
    62.  
      }
    63.  
      }
    64.  
       
    65.  
      void postOrderTraverse(BitNode *&root)
    66.  
      {
    67.  
      if(root->lchild)
    68.  
      postOrderTraverse(root->lchild);
    69.  
      if(root->rchild)
    70.  
      postOrderTraverse(root->rchild);
    71.  
      printf("%c",root->value);
    72.  
      }
    73.  
       
    74.  
      int main()
    75.  
      {
    76.  
      char pre[N],in[N];
    77.  
      while(scanf("%s",pre)!=EOF)
    78.  
      {
    79.  
      scanf("%s",in);
    80.  
      int len1=strlen(pre);
    81.  
      int len2=strlen(in);
    82.  
      BitNode *root=NULL;
    83.  
      CreatTree(root,pre,0,len1-1,in,0,len2-1);
    84.  
      postOrderTraverse(root);
    85.  
      printf("\n");
    86.  
      }
    87.  
      return 0;
    88.  
      }

C++ 函数参数中“ *&代表什么? ”的更多相关文章

  1. python函数参数中带有默认参数list的坑

    在python中函数参数中如果带有默认参数list遇到问题 先看一段代码 def f(x,l=[]): for i in range(x): l.append(i*i) print(l) print( ...

  2. (转)python中函数参数中如果带有默认参数list的特殊情况

    在python中函数参数中如果带有默认参数list遇到问题 先看一段代码 1 2 3 4 5 6 7 8 9 def f(x,l=[]):     for i in range(x):         ...

  3. 关于cmp函数参数中的&符号

    关于cmp函数参数中的&符号 关于sort函数中的cmp函数有着不同的写法,以刚刚的整形元素比较为例 还有人是这么写的: bool cmp(const int &a, const in ...

  4. Python函数参数中的冒号与箭头

    在一些Python的工程项目中,我们会看到函数参数中会有冒号,有的函数后面会跟着一个箭头,你可能会疑惑,这些都是什么东西? 其实函数参数中的冒号是参数的类型建议符,告诉程序员希望传入的实参的类型.函数 ...

  5. Delphi 中 函数参数中的 const 修饰符的本质以及注意事项

    来自:http://blog.csdn.net/farrellcn/article/details/9096787 ------------------------------------------ ...

  6. javascript 在一个函数参数中包含另一个函数的引用

    javascript函数的参数包含另一个函数的情形: <script> //b函数的参数func为另一个函数 function b(a, func) {  alert(a); //调用参数 ...

  7. C++函数参数中的省略号

    本文基本是转载自:https://blog.csdn.net/think12/article/details/5785066 另一篇看到写得很好的博客:https://www.cnblogs.com/ ...

  8. 【VS开发】程序如何捕捉signal函数参数中指定的信号

    当说到signal的功能时,我们都知道它会捕捉我们所指定的信号,然后调用我们所指定的信号处理函数.但它是如何捕捉我们指定的信号的呢?下面我就以msdn上关于signal的example为例,说明sig ...

  9. C# 函数参数中的this

    先看下面的代码: public static class StringExtension { public static void Foo(this string s) { Console.Write ...

随机推荐

  1. 【caffe-Windows】微软官方caffe之matlab接口配置,以及安装caffe的注意事项

    1.在此之前,记录一下之前的错误,在参考博客[caffe-Windows]caffe+VS2013+Windows+GPU配置+cifar使用进行caffe的安装时,其中的一些步骤可以不做,具体见下图 ...

  2. Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正

    Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正 http://blog.csdn.net/jiangwei0910410003/article/details/51 ...

  3. <c:if></c:if>用法-转载

    <c:if test="value ne, eq, lt, gt,...."> 用法 类别 运算符 算术运算符 + . - . * . / (或 div )和 % (或 ...

  4. vue中使用ueditor富文本编辑框

    1.把下载的Ueditor资源,放入静态资源static中. 修改ueditor.config.js中的window.UEDITOR_HOME_URL配置,如下图: 2.在main.js中引入以下文件 ...

  5. JSP中的9大内置对象四大域与servlet里的三大域

    九大内置对象 隐式对象 说明 out 转译后对应JspWriter对象,其内部关联一个PringWriter对象 request 转译后对应HttpServletRequest/ServletRequ ...

  6. Number 和 parseInt 区别

    把字符串 转换成 数字的时候, Number 有点不靠谱, 因为会对 '' 和 null 转换成0, parseInt 相对靠谱些; 判断是否是数值时, isNaN 对于字符串'2'的判断是数字, 对 ...

  7. java 同步 异步

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 同步 就是  讲究顺序 异步 就是  可以同时进行. 不知道那个家伙起得名字.. 讲究 ...

  8. vijos Warcraft III 守望者的烦恼

    题解 转移方程好写吧 一个一维递推式 然后我们可以构造矩阵优化 嗯,最近学一下递推优化 代码 #include<cstdio> #include<cstring> #inclu ...

  9. 「ZJOI2009」多米诺骨牌

    「ZJOI2009」多米诺骨牌 题目描述 有一个n × m 的矩形表格,其中有一些位置有障碍.现在要在这个表格内 放一些1 × 2 或者2 × 1 的多米诺骨牌,使得任何两个多米诺骨牌没有重叠部分,任 ...

  10. Codeforces 959 F. Mahmoud and Ehab and yet another xor task

    \(>Codeforces\space959 F. Mahmoud\ and\ Ehab\ and\ yet\ another\ xor\ task<\) 题目大意 : 给出一个长度为 \ ...