您现在的位置是:首页 > 正文

创建单链表中出现的一些经典错误(typedef关键字与指针)

2024-02-01 02:42:26阅读 2

本文记录的是本人在单链表学习及实现过程中的个人理解和遇到的一些错误,不严谨之处欢迎批评指正。

一、首先来看结点结构体的定义

//定义一个结构体类型用于构建结点
typedef struct LNode
{
	int data;
	LNode* next;
}*LinkList;

此处利用C语言关键字typedef来给结构体指针起一个别名,意图在于区分头指针和结点,提高代码的可读性。

其中:data存放数据,为数据域;next存放的是LNode*类型的指针,用于保存下一个结点的地址,为指针域。

二、申请内存,创建结点。

下面来看一下我在使用typedef定义的别名来创建指针和申请内存过程中所犯的两个错误。

错误一:在【别名】之后加了一个 * ,结果:想要使用此方法创建的指针访问结构体成员时,被提示没有成员可访问。下面看截图:

 错误原因:我们在结构体定义时,使用 typedef 结构体类型名 { 成员列表 } * LinkList;起了一个结构体指针别名 LinkList 。

而在图片中,定义头指针时,在LinkList之后加了一个 * 号,此时LinkList已经是一个指针类型了,再加一个*之后,实质上定义了一个二级指针。而这个二级指针也没有指向一个一级指针,当然无法访问到成员。

网站文章

  • Linux Shell 进阶 - Linux Shell进阶学习教程 - Linux Shell练习 - HPC基础 - 源码设计师

    Linux Shell 进阶 - Linux Shell进阶学习教程 - Linux Shell练习 - HPC基础 - 源码设计师

    Linux Shell 进阶 - Linux Shell进阶学习教程 - Linux Shell练习 - HPC基础 - 源码设计师 Linux Shell进阶学习教程 - Linux Shell练习...

    2024-02-01 02:41:57
  • mac OS锁定 解锁文件

    mac OS锁定 解锁文件

    mac OS锁定 解锁文件

    2024-02-01 02:41:54
  • java基础——方法

    方法 /** * 1.什么是方法? * 方法就是把一堆需要反复执行的代码封装起来,如果程序需要执行这段代码,直接调用方法名即可。 * 就是类似于一个榨汁机, * 材料:水果 * 产出物:果汁 * * ...

    2024-02-01 02:41:51
  • 获取浏览器语言

    获取浏览器语言(navigator.language || navigator.browserLanguage).toLowerCase()根据浏览器语言切换语言//根据浏览器语言切换语言functi...

    2024-02-01 02:41:23
  • Tensorflow深度学习之-激活函数选择与使用介绍

    Tensorflow深度学习之-激活函数选择与使用介绍

    激活函数都有一定的使用场景,ReLU的流行只是在大部分的场景下都适用,具体要选择哪种激活函数,要根据你自己的实际应用来作决策。如果你不确定你要用什么,ReLU不会让你失望。在使用ReLU时,ReLU和leaky ReLU任取一个即可,也可以都尝试一下,哪一个能取得最佳结果。

    2024-02-01 02:41:16
  • ActiveMQ初步安装

    ActiveMQ初步安装

    一、官网下载 ActiveMQ官网:http://activemq.apache.org/ 安装ActiveMQ的前提是已经安装好了JAVA JDK环境。 PS:我这里下载的是经典版 下载完之后将它放...

    2024-02-01 02:41:09
  • spring boot 、mybatis-plus、shiro整合入门教程(二)——mybatis-plus常用操作

    spring boot 、mybatis-plus、shiro整合入门教程(二)——mybatis-plus常用操作

    接续上一篇,spring boot 、mybatis-plus、shiro整合入门教程(一)——mybatis-plus代码生成器项目中的数据库表设计如下:菜单管理页面功能:新增、修改、删除、查询新增代码如下:SysMenuController类的代码如下:@Resource private SysMenuServiceImpl sysMenuService; /*...

    2024-02-01 02:41:00
  • .md文档是什么? 如何打开?

    .md文档是什么? 首先来普及一下什么是md文件, md全称markdown,markdown也是一种标记语言。 .md即markdown文件的基本常用编写语法,是一种快速标记、快速排版语言,现在很多前段项目中的说明文件readme等都是用.md文件编写的,而且很多企业也在在鼓励使用这种编辑方式,特别作为一个前端从业者更要学会使用这种语言。下面就简单和大家分享一些...

    2024-02-01 02:40:31
  • 分布式集群框架——zookeeper必考面试题①

    分布式集群框架——zookeeper必考面试题①

    接收到客户端请求,处理请求判断是否需要注册 Watcher,需要的话将数据节点的节点路径和 ServerCnxn(ServerCnxn 代表一个客户端和服务端的连接,实现了 Watcher 的 pro...

    2024-02-01 02:40:26
  • sqli-labs Less-54、55、56、57(sqli-labs闯关指南 54、55、56、57)

    sqli-labs Less-54、55、56、57(sqli-labs闯关指南 54、55、56、57)

    sqli-labs Less-54、55、56、57(sqli-labs闯关指南 54、55、56、57)

    2024-02-01 02:40:20