typedef struct Node{
int elem;
struct node * next;
}node,*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,这样,向函数传递的就是指针的地址,结束调用后,自然就可以去改变指针的值;
而如果函数只会修改指针所指向的内容,而不会更改指针的值,那么用LinkList L就行了;下面说个具体实例吧!#include <stdio.h>
#include <stdlib.h>typedef int ElemType;
typedef struct Node{ElemType elem;struct Node * next;
}Node, * LinkList;//初始化链表,函数调用完毕后,L会指向一个空的链表,即会改变指针的值,所以要用*L
void InitList(LinkList *L)
{*L = (LinkList)malloc(sizeof(Node));(*L)->next = NULL;
}//清空链表L,使L重新变为空链表,函数调用完后不会改变指针L的值,只会改变指针L所指向的内容(即L->next的值)
void ClearList(LinkList L)
{LinkList p;while(p = L->next)free(p);
}//销毁链表L,释放链表L申请的内存,使L的值重新变为NULL,所以会改变L的值,得用*L
void DestroyList(LinkList *L)
{LinkList p;while(p = (*L)->next )free(p);free(*L);*L = NULL;
}void main()
{LinkList L = NULL;InitList(&L);ClearList(L);DestroyList(&L);
}

链表中LinkList L与LinkList *L的区别以及(*L).elem,L.elem L-next,(*L)-next的区别相关推荐

  1. 链表中的LinkList L、LinkList *L

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

  2. 创建链表小细节(引用传递和值传递以及链表中的LinkList L、LinkList *L、LinkList L)

    函数参数传递的两种方式为值传递和引用传递 目录 函数参数传递的两种方式为值传递和引用传递 1.传值方式传参 2.引用方式传参 3.通过一段代码运行进一步理解传指针(包括二级指针)和传指针的引用 4.总 ...

  3. 单链表创建的LinkList L与LinkList *L区分的问题

    在学习线性表的存储结构中,很多人在学习线性表的链式存储结构即单链表时,有人会注意函数传参LinkList L与LinkList *L的问题,如下 下面展示一些 内联代码片. #include<s ...

  4. 取消对 null 指针“l”的引用。_彻底理解链表中为何使用二级指针或者一级指针的引用...

    在用c/c++写数据结构程序时,链表和二叉树中经常需要用到二级指针或者一级指针的引用,那么什么时候用什么时候不用呢? 先看一个简单的c++链表操作程序: [cpp] view plaincopy/* ...

  5. LinkList *L和 LinkList *L和LinkList *L

    结论 LinkList *L和 LinkList *&L 引用L是为了改变L的值,而L指向的是链表的头结点的地址,即要改变头结点的地址,但是一般改链都是对头结点之后的结点进行操作,所以头结点的 ...

  6. LinkList *L , LinkList L, LinkList *L 和 LinkList *L区别及用法

    参数传递实际上是值传递,当指针作为函数参数传递时,传递的实际上时指针索指向的地址 typedef struct Node {ElemType data;//定义数据data为ElemType型,此处不 ...

  7. LinkList L与LinkList *L Lnode与*LinkList的区别

    typedef struct node {int data;struct node* next; }Lnode,*LinkList; 对于结构体前面加typedef是给结构体起了个别名, struct ...

  8. 有一个顺序表L,其元素为整形数据,设计一个算法,将L中的所有小于表头元素的整数放在前半部分,大于表头元素的整数放在后半部分

    题目 有一个顺序表L,其元素为整形数据,设计一个算法,将L中的所有小于表头元素的整数放在前半部分,大于表头元素的整数放在后半部分 解答(天勤) /*************************** ...

  9. 关于指针和链表中的一些问题

    学习数据结构时对指针和链表很迷糊,也就自己总结 一下,如果有错误或者理解上的错误欢迎指正,谢谢 指针 指针是什么,指针就是指针类型,就和int 类型,float类型等一样,而对于指针个人当时学习的时候 ...

最新文章

  1. leetcode 41. First Missing Positive
  2. android开发 权限大全
  3. 三星i9018root方法
  4. iPhone的UDID与push中使用的device token的关系
  5. PHP、C#、通用的DES加密
  6. 云米冰箱能控制扫地机器人_既能解放劳动力又能提升家庭幸福指数的小家电,云米互联网扫地机Pro开箱!...
  7. 从底层分析c和类c语言
  8. Entity Framework Core 3.1 和 Entity Framework 6.4 发布
  9. Matlab使用过程中内存不足问题的总结(修改)
  10. php curl 和 socket,PHP HTTP操作类 , 支持 Curl 和 Socket
  11. 对‘pthread_create’未定义的引用_全球两大引文数据库,都在悄悄少算引用次数...
  12. 计算机PS考试都考哪些,计算机专业ps考试题(考查课)(10页)-原创力文档
  13. PySimpleGUI经典实践之:这个汉字怎么读?
  14. 节假日判断工具(Java)
  15. 4-3. 统计素数并求和(20)
  16. 字符串之间的大小比较方法
  17. linux下批量创建文件(空文件、带内容文件)、文件夹
  18. HTML5篮球弹跳运动规律,篮球体能训练的七大原则
  19. ssh连接服务器FTP传不了文件,ssh连接服务器FTP传不了文件
  20. 购买价格与商品价格和SKU价格的关系

热门文章

  1. 国内技术社区五六月交流活动预告(北京、上海、深圳、大连、成都)
  2. vue2.0实战项目——简单的快餐店系统
  3. 【毕设】班级管理系统——易搜
  4. wangEdit富文本编辑器的使用
  5. 合约机和非合约机是什么意思
  6. Python+Appium自动化测试框架
  7. 百度网盘下载慢怎么解决
  8. 山东济南计算机专业专科学校实力排名,济南计算机大专排名
  9. 软件测评师--第七小时 面向对象测试技术
  10. C语言及gnuplot任意波形产生及作图-以三角波为例