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. thinkphp5.0URL访问

    URL设计 ThinkPHP5.0在没有启用路由的情况下典型的URL访问规则是: http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数名/参数值. ...

  2. 2017-2018-1 20179202《Linux内核原理与分析》第五周作业

    一.系统调用实验: 1.知识准备: (1)系统调用的三层皮:xyz()(API).system_call(所有系统调用的入口) . sys_xyz()(中断服务程序) (2)API是程序员在用户空间下 ...

  3. TCP/IP重新学习

    TCP/IP 是用于因特网 (Internet) 的通信协议. 1.什么是TCP/IP? TCP/IP 是供已连接因特网的计算机进行通信的通信协议. TCP/IP 指传输控制协议/网际协议(Trans ...

  4. Python函数系列-一个简单的生成器的例子

    def consumer(): while True: x = yield print('处理了数据:',x) def producer(): pass c = consumer() #构建一个生成器 ...

  5. springMVC

    SpringMVC架构流程: 1.用户发送请求至前端控制器DispatcherServlet2.DispatcherServlet收到请求调用HandlerMapping处理器映射器.3.处理器映射器 ...

  6. React Native 系列(三)

    前言 本系列是基于React Native版本号0.44.3写的,相信大家看了本系列前面两篇文章之后,对于React Native的代码应该能看懂一点点了吧.本篇文章将带着大家来认识一下React N ...

  7. FastReport.Net使用:[34]小册子报表(奇偶页)

    打印一份小册子类型的报表,能实现如下要求: ●单独的封面,目录,报表内容,背面 ●奇偶页不同的页边距 ●奇偶页不同的页面/页脚 下面的例子将用到以上3点. 1.奇偶页的实现主要通过报表控件对象的Pri ...

  8. 【BZOJ 3308】 3308: 九月的咖啡店 (费用流|二分图最大权匹配)

    3308: 九月的咖啡店 Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 244  Solved: 86 Description 深绘里在九份开了一家咖 ...

  9. 「LOJ6482」LJJ爱数数

    「LOJ6482」LJJ爱数数 解题思路 : 打表发现两个数 \(a, b\) 合法的充要条件是(我不管,我就是打表过的): \[ a + b = \text{gcd}(a, b)^2 \] 设 \( ...

  10. Codeforces 650 D. Zip-line

    $ >Codeforces \space 650 D. Zip-line<$ 题目大意 : 有一个长度为 \(n\) 的序列 \(h\) ,\(m\) 次询问,每一次询问求如果把序列中第 ...