首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于链表初始化与创建!

2012-03-03 
关于链表初始化与创建求助!!!!typedefstructlnode{intdatastructlnode*next}lnode,*linklist/*linklist

关于链表初始化与创建求助!!!!
typedef   struct   lnode                            
{  
int   data   ;                                            
struct   lnode   *next   ;                          

}   lnode   ,   *linklist   ;     /*linklist是什么意思为啥幺加一个 '* '*/

int   initlink(linklist   *l)         /*为什么不改为Lnode   *l*/
{
(*l)=(linklist   )malloc(sizeof(lnode));    
if(*l==NULL)
return   0;
(*l)-> next=NULL;  

}/*为什么不改为int   initlink   (Lnode   *l)
{
l=(linklist   )malloc(sizeof(lnode));    
if(l==NULL)
return   0;
l-> next=NULL;  

}
或者int   initlink   (linklist   l)
{
l=(linklist   )malloc(sizeof(lnode));    
if(l==NULL)
return   0;
l-> next=NULL;  

}*/

int   createlink(linklist   *l){                    
linklist   head=NULL;                              
int   i,a;                                                  
printf( "请输入10个数...\n ");
for(i=0;i <10;i++)
{
(*l)=(linklist   )malloc(sizeof(lnode));                    
scanf( "%d ",&a);
(*l)-> data=a;                                                                                                
(*l)-> next=head   ;                                              
head=(*l);                                                            

}
return   1;
}
linklist本来就是一个指针   为什么在创建时int   createlink(linklist   *l)
主要就是‘*l’不懂

[解决办法]
这个问题我也是最近才比较明白一点,所以也说不很清楚。最主要的一点就是,如果你要通过子函数改变一个变量的值,则必须把它的地址作为参数;如果你改变的变量为指针,则必须把该指针的地址作为参数,也就是指针的指针,这也是程序的参数为指针的指针的原因。initlink (Lnode *l)这是传递的参数为结构体的指针,它只能改变结构体的值,而不能改变传递的指针的值,而链表创建的过程中需要改变的是指针的值,所以不能这样传递参数,必须要传递指针的指针。

热点排行