在学习数据结构时,我们可以看到不同的书籍或者不同的人对于单链表结构体的定义是不一样的。
大致分为下面两种
第一种

typedef int ElemType;
typedef struct Lnode{ElemType data;struct Lnode *next;
}LinkList;

第二种

typedef int ElemType;
typedef struct Lnode{ElemType data;struct Lnode *next;
}Lnode,*LinkList;

我们可以看到,这两种结构体定义大致是相同的,只是在括号的最后是不同的,一种是LinkList,一种是Lnode,*LinkList

这两种定义方式,都是可以的!!!
下面我来阐述一下,对于这两种不同的定义方式,在函数体形参、定义指针变量、创建新节点中如何使用。

第一种,定义时仅有LinkList

typedef int ElemType;
typedef struct Lnode{ElemType data;struct Lnode *next;
}LinkList;
void text_Link(LinkList *la,LinkList *&lb){//对la的形参定义是:只对la进行遍历等操作,不可更改;对lb的定义是可以修改lbLinkList *p;  //定义p指针变量p=(LinkList*)malloc(sizeof(LinkList)); //创建新节点
}

第二种,定义时为Lnode,*LinkList

typedef int ElemType;
typedef struct Lnode{ElemType data;struct Lnode *next;
}Lnode,*LinkList;
void text_Link(LinkList la,LinkList &lb){//对la的形参定义是:只对la进行遍历等操作,不可更改;对lb的定义是可以修改lbLinkList p;  //定义p指针变量p=(LinkList)malloc(sizeof(Lnode)); //创建新节点
}

关于理论性的解释,我没有深入了解,没有发言权。如果有大神对这方面有相关研究,欢迎评论区评论。

欢迎大家批评指正!

对于单链表结构体中LinkList以及Lnode,*LinkList两种不同定义方式的个人理解相关推荐

  1. 单链表结构体定义解析

    B站 typedef struct LNode{ ElemType data;struct LNode *next; }LNODE, *LinkList;

  2. 解码中的AnnexB和avcC两种分割数据方式

    目前 H.264 流行的包装方式有两种,一种叫做 AnnexB,一种叫做 avcC.对于这两种格式,各家的支持程度也不太一样,例如,Android 硬解码 MediaCodec 只接受 AnnexB ...

  3. 通讯录中每个通讯者的信息包括编号、姓名、性别、电话、E-mail地址;采用单链表结构存储

    通讯录中每个通讯者的信息包括编号.姓名.性别.电话.E-mail地址:采用单链表结构存储,实现以下功能: 1.通讯录的建立 2.通讯者信息的插入 3.通讯者信息的查询 4.通讯者信息的删除 5.通讯录 ...

  4. c语言 增加 删除 修改的功能 不用链表,不用链表,单是结构体写入文件后,是否可以进行修改删除...

    不用链表,单是结构体写入文件后,是否可以进行修改删除 #include #include #include typedef struct Node { char  num[20]; char name ...

  5. C语言 泛型链表 如何计算(结构体中各元素)相对内存地址?(字节对齐,结构体对齐)offsetof()函数 ( (struct X*)0 ) -> Y)语法(匿名结构体)

    示例: typedef struct _user {char name[20];char sex[20];int age;struct list_head mylist;//自定义结构体里保存双向循环 ...

  6. 《数据结构》c语言版学习笔记——单链表结构(线性表的链式存储结构Part1)

    线性表的链式存储结构 数据结构系列文章 第二章 单链表结构 文章目录 线性表的链式存储结构 前言 一.单链表的建立 代码 二.单链表的读取 代码 三.单链表的插入 代码 四.单链表的删除 代码 五.单 ...

  7. c语言给结构体指针申请空间,结构体中的指针变量申请空间问题

    本人声明了一个结构体包含id,age,name三个属性 struct studentInfo { int id; int age; char *name[20]; }; 本人又创建了一个双向循环链表, ...

  8. 结构体中定义函数指针

    结构体指针变量的定义,定义结构体变量的一般形式如下: 形式1:先定义结构体类型,再定义变量 struct结构体标识符 { 成员变量列表;- }; struct 结构体标识符 *指针变量名; 变量初始化 ...

  9. malloc和free——结构体中动态内存的管理

    C语言中内存的管理主要是依据malloc和free实现的,其中malloc主要是实现内存的分配,而free则是实现内存的释放.虽然这是我们已经很熟悉的,但是还是存在一些问题.特别是当结构体中存在指针的 ...

最新文章

  1. 【微服务架构】SpringCloud之断路器(hystrix)
  2. TensorRT-优化-原理
  3. linux 6.7 nfs安装yum,centos7下NFS使用与配置
  4. postgresql Insert插入的几个报错
  5. 分类、检测、分割任务均有SOTA表现,ACNet有多强?
  6. sql server 常用函数
  7. linux ssh 脚本 密码,ssh自动登录的4种实现方法
  8. 3.2 表达式的类别与类型
  9. Matlab生成各种伪随机信号_idinput指令
  10. HALCON示例程序color_pieces.hdev通过MLP训练器对彩色棋子进行分类识别
  11. 关于Orchard CMS
  12. python鼠标碰撞_Python+opencv第5节鼠标响应事件,pythonopencv,第五节
  13. Python脚本可在Microsoft Excel中格式化数据
  14. 活动目录系列之十二:活动目录的修复(下)
  15. OAuth: How and Why?
  16. php连接池 php–cp
  17. 计算机的工作原理(冯诺依曼体系)
  18. java中的build类_30 Java设计模式系列-建造者(Build)模式
  19. 2021雷军年度演讲 - 我的梦想,我的选择
  20. 招聘信息薪资范围是12-20K,能否要20K的薪资?

热门文章

  1. matlab帧间差分法前景提取_matlab采用帧差法实现运动目标检测
  2. 如何看服务器电源型号,AcBel CRPS 服务器电源系列介绍
  3. Oracle分析函数大全
  4. 解决com.mchange.v2.c3p0.DriverManagerDataSource. Could not load driverClass com.mysql.cj.jdbc.Driver报错
  5. 常见命令之 head与tail
  6. 二进制与十进制的转换教案
  7. 3.高精度加法(使用C++的string实现高精度加法运算的实例代码)包含auto解决办法
  8. MySQL数据库函数
  9. spring boot启动 Failed to scan from classloader hierarchy 解决方案
  10. 西门子PLC解密软件,西门子smart200解密软件,西门子200,300解密软件,松下,台达PLC欧姆龙,AB,解密软件三菱解密,威纶通触摸屏解密软件,