数据结果中linklist是什么意思,LinkList型变量是什么意思?

如题所述

对于LinkList L: L是指向定义的node结构体的指针,可以用->运算符来访问结构体成员,即L->elem,而(*L)就是个Node型的结构体了,可以用点运算符访问该结构体成员,即(*L).elem;

LinkList *L:L是指向定义的Node结构体指针的指针,所以(*L)是指向Node结构体的指针,可以用->运算符来访问结构体成员,即(*L)->elem

当然,(**L)就是Node型结构体了,所以可以用点运算符来访问结构体成员,即(**L).elem;

链表操作中,我们常常要用链表变量作物函数的参数

这时,用LinkList L还是LinkList *L就很值得考虑深究了,一个用不好,函数就会出现逻辑错误,其准则是: 

如果函数会改变指针L的值,而你希望函数结束调用后保存L的值,那就要用LinkList *L,这样

向函数传递的就是指针的地址,结束调用后,自然就可以去改变指针的值;

扩展资料:

1.指向结点的指针,和指向指针的指针是不同的

2. 您现在要修改的是指针的值,而不是结点的值,所以需要用指向指针的指针

3. 使用几级指针需要看您希望发生变化的是是什么,如果您需要发生变化的是指针,则需要使用指向指针的指针,如果您需要发生变化的只是一个普通变量的值,那您就只需要使用指针即可。

 例如:  1. 方法void getReturn(int a) { a = 10;}是得不到a变化为10的结果的,为了得到这个结果你需要使用void getReturn(int *a) { *a = 10;}才得到变化值的整型变量

 2. 如果您是想改变指针a的值呢? int b = 10; void getReturn(int *a) {a = &b;}肯定是无法得到变化了指针地址的a指针的。 

此时您需要修改为:  int b = 10; void getReturn(int **a) { *a = &b;}才能得到一个变化了指针地址的a指针。

 同理您现在想要修改的是指针地址,因此需要使用指向指针的指针,而不是指针。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-25
这是编程人员自己定义的变量,从名字来理解就是“链表”,你也可以把它起程别的名字本回答被提问者采纳
相似回答