c语言-C语言,数据结构,树的孩子兄弟表示法,程序一切正常,但是有个问题不太懂了

问题描述

C语言,数据结构,树的孩子兄弟表示法,程序一切正常,但是有个问题不太懂了

我的困惑就是在creatTree函数中,参数是(LTNode &T),也就是说是struct node**型指针,但是在递归中,也就是在creatTree(T->firstchild)中,T->firstchild应该是struct node*型指针,为什么依然可以运行,且运行正确?
printfTree()函数也是一样,我就不再多写了
而在main()函数中,我也只创建了LTNode T;在调用的时候直接写T=creatTree(T);困惑在这有一个了,参数不是LTNode &T吗?为什么直接用creatTree(T)行?而用creatTree(&T)不行,而且还报错,说cannot convert parameter 1 from 'struct node ** ' to 'struct node *& '
A reference that is not to 'const' cannot be bound to a non-lvalue
哪位高手帮我分析一下,我觉得我可能说错了,应为程序可以正确运行,但是我又不知到错在哪里?求解释...

#include<stdio.h>
#include<stdlib.h>
typedef struct node{
    char name;
    struct node *firstchild,*nextbrother;
}TNode,*LTNode;

int n=1;
int i;

LTNode creatTree(LTNode &T){
    char c;
    printf("第%d个树元素",n);
    scanf("%c",&c);
    getchar();
    if(c=='*'){
        n--;
        T=NULL;
    }
    else{
        T=(LTNode)malloc(sizeof(TNode));
        T->name=c;
        n++;
        printf("输入成功n");
        printf("%c的左孩子:",T->name);
        creatTree(T->firstchild);
        printf("%c的右孩子:",T->name);
        creatTree(T->nextbrother);
    }
    return T;
}

void printfTree(LTNode &T){
    if(T){
        printf("%c",T->name);
        printfTree(T->firstchild);
        printfTree(T->nextbrother);
    }
}

int main(){
    LTNode T;
    T=NULL;
    T=creatTree(T);
    printf("我们可以输出了吗?n");
    getchar();
    printfTree(T);
    printf("n");
    return 0;
}

解决方案

LTNode creatTree(LTNode &T)
此处的函数形参是引用,只要你传递相应类型的对象就可以。

时间: 2024-11-02 19:50:09

c语言-C语言,数据结构,树的孩子兄弟表示法,程序一切正常,但是有个问题不太懂了的相关文章

数据结构例程——以孩子兄弟链存储的树的高度

本文是数据结构基础系列(6):树和二叉树中第5课时树的存储结构的例程. 例: 以孩子-兄弟链作为存储结构,求树的高度 源程序:[说明--函数TreeCreate仅创建了如上图所示的图,不具有通用性.] #include <stdio.h> #include <malloc.h> typedef char ElemType; typedef struct tnode { ElemType data; //节点的值 struct tnode *hp; //指向兄弟 struct tno

c语言-新手对于数据结构的疑问

问题描述 新手对于数据结构的疑问 楼主现在学的是严蔚敏著的C语言版的数据结构这本书.但是感觉上手很难,非常想学好数据结构,有没有前辈指点一下这门数据结构该怎么学好,该怎么入门..(求详细进阶之路) 解决方案 是的,大学教师最擅长的是把简单的东西说复杂.特别是基础课.本身都是很简单的东西,人人都能学会.但是考试需要有"区分度",说白了,人人都学会的东西怎么出题呢?因为他们自己根本不懂.你需要明确的一点是,你到底是想在考试中得高分还是只是想把数据结构学明白. 如果是前者,你尽管做题就可以了

源代码-关于C语言编程中R树索引的问题

问题描述 关于C语言编程中R树索引的问题 求教有没有大神知道R树索引如何建立.删除.插入等,急需一份源代码参考学习.谢谢啊,好人一生平安... 解决方案 http://www.cnblogs.com/javaspring/archive/2012/08/14/2656223.html

(C语言版)数据结构线性表从键盘输入元素实现相关功能,不报错,但执行意外终止

问题描述 (C语言版)数据结构线性表从键盘输入元素实现相关功能,不报错,但执行意外终止 #include #include #define MaxSize 50 typedef char ElemType; typedef struct{//struct结构体 ElemType data[MaxSize]; int length; }SqList; void InitList(SqList &L)//初始化线性表的方法,&是取地址符号,是定义指针符号,如int *b=&a:*a=4

c语言递回瓶颈 树 排列

问题描述 c语言递回瓶颈 树 排列 void swap( char *a, char *b ){ char tmp; tmp = *a; *a = *b; *b = tmp; } void permutation( char *c, int d, int e ){ int f; if( d == e ) printf( "%sn", c ); else{ for( f = d; f <= e; f++ ){ swap( ( c + d ), ( c + f ) ); permut

推荐一本用C#语言描述的数据结构

问题描述 我搜索了很多,不过C#语言描述的数据结构都没有找到一本.

c语言指针问题 数据结构

问题描述 c语言指针问题 数据结构 #include<cstdio> #include<cstring> #include<cstdlib> #include<ctime> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 typedef int Status; typedef struct Book { char id[20]; char name[30]; float price; }

编程c语言-c语言版的数据结构中求图的遍历

问题描述 c语言版的数据结构中求图的遍历 调试时为什么会出现已停止工作??具体情况是出现了一个问题,导致程序停止正常工作,如果有可用的解决方案,Windiws将关闭程序并通知你 解决方案 贴出你的代码.代码是调试才能发现错误的.哪有看代码看出错误的. 你自己也要学会调试. 解决方案二: 数据结构(C语言版)规范代码之图(邻接多重表遍历)数据结构(C语言版)摘录--树和二叉树数据结构(C语言版)摘录--图 解决方案三: 看着真费劲.有malloc申请内存,没看到有free呢.

使用c语言如何做出能在win上跑的界面程序呢?

问题描述 使用c语言如何做出能在win上跑的界面程序呢? 自xue的我现在很迷茫. 谭c书籍虽然看完了,但我依旧不知道怎么做软件(那些界面/功能什么的 然后现在正在看 C语言入门经典(5版 第9章函数再探)粗略的翻了一下后面的内容,也没有具体交怎么做软件的,我不知道,我xue完这一本书接下来应该怎么办.妮说数据结构.算法也要学..我也正在xue.但是这些也没有说怎么做界面,做出具体的功能啊! 我只是想从小做起先造个类似 基石传说 xox联盟 盒子 界面&&功能 的软件,以后再慢慢做别的.