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. lr_get_transaction_duration 函数介绍

    lr_get_transaction_duration 用于获取事务所消耗的时间. 实例: Action() { double trans_time; //定义变量 web_url("www ...

  2. Java StringJoiner

    Java StringJoiner Java added a new final class StringJoiner in java.util package. It is used to cons ...

  3. 现在就能投入使用的12个高端大气上档次的CSS3特性

    原文:http://tutorialzine.com/2013/10/12-awesome-css3-features-you-can-finally-use/ 原文中有demo展示及下载. 翻译开始 ...

  4. 《java虚拟机》----java内存区域与内存溢出异常

    No1: java虚拟机所管理的内存将会包括以下几个运行时数据区域 1.方法区 2.虚拟机栈 3.本地方法栈 4.堆 5.程序计数器 No2: 程序计数器: 程序计数器(Program Counter ...

  5. XAML实时显示更新插件LiveXAML

     XAML实时显示更新插件LiveXAML LiveXAML是Visual Studio的第三方扩展插件.该插件可以从Visual Studio Marketplace下载,也可以从官网下载http: ...

  6. linux下如何配置TCP参数设置详解

    设置tcp参数一定要小心谨慎,轻易不要更改线上环境,我贴一下我们线上环境中,sysctl.conf的内容,见文章底部 net.ipv4.tcp_tw_reuse    = 1  net.ipv4.tc ...

  7. Ubuntu下查看软件版本及安装位置

    查看软件版本: XXX --version 或 aptitude show xxx 也可用apt-show-versions (要先安装sudo apt-get install apt-show-ve ...

  8. (bc 1001) hdu 6015 skip the class

    Skip the Class Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) T ...

  9. Python return语句 函数返回值

    return语句是从python 函数返回一个值,在讲到定义函数的时候有讲过,每个函数都要有一个返回值.Python中的return语句有什么作用,今天就来仔细的讲解一下. python 函数返回值 ...

  10. 「WC2010」重建计划(长链剖分/点分治)

    「WC2010」重建计划(长链剖分/点分治) 题目描述 有一棵大小为 \(n\) 的树,给定 \(L, R\) ,要求找到一条长度在 \([L, R]\) 的路径,并且路径上边权的平均值最大 \(1 ...