C++,关于栈、二叉树、链表的创建问题

论坛 期权论坛 期权     
木缚微   2018-4-26 14:06   4600   1
以下为我的创建,我的问题时为什么栈的参数是“&”符号,二叉树用“**”,链表用“*”

//栈
struct Sqstack{
    int *base;
    int *top;
    int stacksize;
};

int Init(Sqstack &S){
    S.base=new int[MAXSIZE];
    S.top=S.base;
    ...以下为我的创建,我的问题时为什么栈的参数是“&”符号,二叉树用“**”,链表用“*”

//栈
struct Sqstack{
    int *base;
    int *top;
    int stacksize;
};

int Init(Sqstack &S){
    S.base=new int[MAXSIZE];
    S.top=S.base;
    S.stacksize=MAXSIZE;
    return 1;
}
int main()
{
    Sqstack S;
    int e;
    Init(S);
    ………
}
//二叉树
struct node{
    char data;
    node *lchild;
    node *rchild;
};
void creattree(node **T){
    char c;
    cin>>c;
    if(c=='#'){
        *T=NULL;
    }
    else{
        *T=new node;
        (*T)->data=c;
        creattree(&(*T)->lchild);
        creattree(&(*T)->rchild);
    }
}
int main()
{
    node *T=new node;
    creattree(&T);
   …………
}

//链表
struct LNode{
     int data;
     LNode *next;
     };

void creat_link(LNode *L,int n){
LNode *s,*d;
L->next=NULL;
d=L;
int main()
{

    LNode *L=new LNode;
   creat_link(L,5);
  ………………
}展开
分享到 :
0 人收藏

1 个回复

倒序浏览
2#
层主天天爆炸  3级会员 | 2018-4-30 01:48:44 发帖IP地址来自
&是引用的意思,这个意思是实参和形参是相同的,所占空间是一样的,只是换名字而已。
*的话是一级指针,在传入create_link 之前头结点已经分配了空间,当然之后在函数中就可以修改它的指向了。如果头节点在函数内部分配空间还是得使用二级指针的,因为修改了指针的内容。
二叉树中修改了指针内容,使用二级指针才能带回修改值。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP