*&代表什么?
//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中的&表明引用实参,即代表实参的一个别名。 操作引用变量就相当于操作实参变量
利用前序和中序求二叉树(源代码):
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring>
using namespace std;; const int N=31; typedef struct BitNode { char value;
BitNode *lchild,*rchild; }BitNode,*BiTree; /* *&代表什么? 这是C++的语法写法,&在形参中表示“引用”实参,
LNode * &lst ; 中LNode * 是个整体,表示变量类型是LNode类指针, &lst中的&表明引用实参,即代表实参的一个别名。
标准C是不支持这种写法的。 追问 &不是取地址符吗? 引用参数是什么意思 追答 &在变量定义区,表示引用,要注意它的用法, &在变量操作区,表示取地址符,如:
int x=10, *p=&x ; //这里&作用在x上, 是取地址符 int &x ;
//引用是C++引入的一个新特性,你要学的不是C++,则上述代码你是搞不懂的。 这里的&就表示引用。 一般这种形式会在形参中出现。 LNode * &lst
; 中LNode * 是个整体,表示变量类型是LNode类指针, &lst中的&表明引用实参,即代表实参的一个别名。 操作引用变量就相当于操作实参变量 */
void CreatTree(BitNode* &root,char *pre,int l1,int r1,char *in,int l2,int r2) {
if(l1<=r1&&l2<=r2) { int key=pre[l1]; int midIndex=-1; for(int i=l2;i<=r2;i++)
{ if(in[i]==key) { midIndex=i; break; } } root=(BitNode
*)malloc(sizeof(BitNode)); root->value=key; root->lchild=NULL;
root->rchild=NULL; int llen=midIndex-l2; CreatTree(root->lchild, pre, l1+1,
l1+llen, in, l2, midIndex-1); CreatTree(root->rchild, pre, l1+llen+1, r1, in,
midIndex+1, r2); } } void postOrderTraverse(BitNode *&root) { if(root->lchild)
postOrderTraverse(root->lchild); if(root->rchild)
postOrderTraverse(root->rchild); printf("%c",root->value); } int main() { char
pre[N],in[N]; while(scanf("%s",pre)!=EOF) { scanf("%s",in); int
len1=strlen(pre); int len2=strlen(in); BitNode *root=NULL;
CreatTree(root,pre,0,len1-1,in,0,len2-1); postOrderTraverse(root);
printf("\n"); } return 0; }
热门工具 换一换