数据结构c语言初始化单链表的头结点 为什么这么写不对 求高手解答!
这是定义的结构体typedefstructLNode{ElemTypedata;structLNode*next;}LNode,*LinkList;主函数是这么定义的Li...
这是定义的结构体
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
主函数是这么定义的 Linklist la;LinkList0505 l;
函数调用 l.InitList_L(la);//调用的就是下面的这个函数)
以下是构造空的线性链表的写法(带头结点,实际上就是构造头结点)
为什么必须是
Status LinkList0505::InitList_L(LinkList &L)
{//操作结果:构造一个空的线性表L。
L=(LinkList)malloc(sizeof(LNode)); //为头结点申请空间
if(!L) return ERROR; //若申请空间失败
L->next=NULL;
return OK;
}
而这样写不对 运行不成功!!!(唯一的区别就是 Linklist &L)
Status LinkList0505::InitList_L(LinkList L)
{//操作结果:构造一个空的线性表L。
L=(LinkList)malloc(sizeof(LNode)); //为头结点申请空间
if(!L) return ERROR; //若申请空间失败
L->next=NULL;
return OK;
}
对比以下代码中 上面的Linklist与下面的data* 不一样吗?(我觉得一样啊)
为什么下面对 上面不对。
typedef struct data_type
{
int age;
char name[20];
} data;
data *bob;
bob = (data *) malloc( sizeof(data) );
if( bob != NULL )
{
bob->age = 22;
strcpy( bob->name, "Robert" );
printf( "%s is %d years old\n", bob->name, bob->age );
}
free( bob ); 展开
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
主函数是这么定义的 Linklist la;LinkList0505 l;
函数调用 l.InitList_L(la);//调用的就是下面的这个函数)
以下是构造空的线性链表的写法(带头结点,实际上就是构造头结点)
为什么必须是
Status LinkList0505::InitList_L(LinkList &L)
{//操作结果:构造一个空的线性表L。
L=(LinkList)malloc(sizeof(LNode)); //为头结点申请空间
if(!L) return ERROR; //若申请空间失败
L->next=NULL;
return OK;
}
而这样写不对 运行不成功!!!(唯一的区别就是 Linklist &L)
Status LinkList0505::InitList_L(LinkList L)
{//操作结果:构造一个空的线性表L。
L=(LinkList)malloc(sizeof(LNode)); //为头结点申请空间
if(!L) return ERROR; //若申请空间失败
L->next=NULL;
return OK;
}
对比以下代码中 上面的Linklist与下面的data* 不一样吗?(我觉得一样啊)
为什么下面对 上面不对。
typedef struct data_type
{
int age;
char name[20];
} data;
data *bob;
bob = (data *) malloc( sizeof(data) );
if( bob != NULL )
{
bob->age = 22;
strcpy( bob->name, "Robert" );
printf( "%s is %d years old\n", bob->name, bob->age );
}
free( bob ); 展开
展开全部
第二个肯定是错的,L是LinkList类型的,不能用malloc分配内存
但第一个,传递进去的是地址,因此L是LinkList*类型的,可以用malloc来分配内存
但第一个,传递进去的是地址,因此L是LinkList*类型的,可以用malloc来分配内存
追问
Linklist是什么类型的?
追答
对不起哈,看错了,LinkList是LNode*类型的,已经是个指针了。
第二个不是运行不成功,而是,作为指针的L,它在函数里面操作的不能传到外面去。例如:
void fun(int &a)
{
...
}
函数里面对a的操作可以通过参数传递回出去
void fun(int a)
{
...
}
但是这个a只是一个形参,不能通过参数传递回原来的实参那里,在里面操作的只是对形参a的操作,而跟实参完全没关系
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
传指针的指针才可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询