单链表中结构体指针及指针做参数疑点解惑
2017-09-08 23:19
239 查看
大二时数据结构学的迷迷糊糊,很多问题没有深究,书上怎么写我就怎么记,没有思考过一些细节。最近考研复习数据结构遇到不少费解的问题,问题很细,可能很多人都会不小心忽视。
单链表的定义
首先关于LNode的问题:
为啥要定义两次LNode呢?两次的作用是否相同呢?
答案是不相同!在结构体定义typedef struct A{...}A中,前一个A是结构体标记,后一个A是你定义的一个结构体数据类型。结构体标记没有啥实际作用,其实可以随便取名字,一般用来标记该结构体的某些信息,唯一的用处就是你需要创建一个结构时要会使用到它,比如说
后一个A是你定义的一个结构体数据类型。问题来了,啥叫我定义的一个结构体的一个数据类型?数据类型大家都知道吧,比如说int,double。它们有什么用处?创建它们各自类型的新变量啊,比如说
同理,现在的A就相当于int,double,我可以直接用它定义一个结构体类型的变量,比如说
在结构体标记很长的时候,直接用结构体类型来创建一个新的结构体变量就会很方便。
但是很多书上把结构体标记跟下面的结构体数据类型写成一样的,就像我上面写的,就会引起很多初学者的误解,以为他们之间必然有什么联系,甚至就应该是相同的。这里我修改掉
关于*LinkList的问题。
指针不得不说是C、C++语言里面最费解的问题之一了。*LinkList定义了一个struct hello类型的指针,意思是说*LinkList是与LNode不同名字但是同一个类型,其实是等价的。LinkList本质上是一个指向该结构体的指针类型。比如说,我定义一个LinkLIst类型的指针p
单链表的定义
typedef struct LNode{ Elemtype data; struct LNode *next; }LNode,*LinkList;
首先关于LNode的问题:
为啥要定义两次LNode呢?两次的作用是否相同呢?
答案是不相同!在结构体定义typedef struct A{...}A中,前一个A是结构体标记,后一个A是你定义的一个结构体数据类型。结构体标记没有啥实际作用,其实可以随便取名字,一般用来标记该结构体的某些信息,唯一的用处就是你需要创建一个结构时要会使用到它,比如说
struct A B;//创建一个A这样的结构体,名字叫B
后一个A是你定义的一个结构体数据类型。问题来了,啥叫我定义的一个结构体的一个数据类型?数据类型大家都知道吧,比如说int,double。它们有什么用处?创建它们各自类型的新变量啊,比如说
int a; double b;
同理,现在的A就相当于int,double,我可以直接用它定义一个结构体类型的变量,比如说
A B;//此时B就是一个A类型的结构体了,内含两个成员变量,一个是data,类型是Elemtype(任意数据类型),一个是结构体指针类型的指针 next,
它只能指向同为该结构体类型的某一个节点
在结构体标记很长的时候,直接用结构体类型来创建一个新的结构体变量就会很方便。
但是很多书上把结构体标记跟下面的结构体数据类型写成一样的,就像我上面写的,就会引起很多初学者的误解,以为他们之间必然有什么联系,甚至就应该是相同的。这里我修改掉
typedef struct hello{ Elemtype data; struct LNode *next; }LNode,*LinkList;
关于*LinkList的问题。
指针不得不说是C、C++语言里面最费解的问题之一了。*LinkList定义了一个struct hello类型的指针,意思是说*LinkList是与LNode不同名字但是同一个类型,其实是等价的。LinkList本质上是一个指向该结构体的指针类型。比如说,我定义一个LinkLIst类型的指针p
LinkList p;那么这个p就是指向该结构体的一个指针,也就是所谓单链表中的头指针。
相关文章推荐
- Labview调用dll参数设置:结构体、指针、数组、簇
- C语言创建链表错误之通过指针参数申请动态内存实例分析
- 关于结构体里面的字符串指针输出出现乱码的问题与结构体数组作为参数传值的问题
- 用结构体变量和指向结构体变量的指针构成链表
- Python Ctypes 结构体指针处理(函数参数,函数返回)
- 用指向结构体的指针做函数参数
- 用结构体变量和指向结构体变量的指针构成链表
- c# 调用 c++ dll 参数为结构体数组指针
- 从单链表创建中的内存变化来理解结构体指针与二级指针的用法
- c语言链表 关于指针参数调用问题
- C++建立单向链表链表头指针需要使用指针类型的引用参数?
- 结构体指针链表基础练习(源代码)
- java调用c dll,指针参数和结构体参数搞定
- 如何正确使用指针(指针作为输出型参数)与结构体指针作为函数参数
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表
- Python与C参数交互---结构体指针作为参数 实例
- 链表中的结构体和指针
- C语言结构体变量和结构体变量的指针作函数参数例题
- C语言用结构体指针作函数参数
- 21.输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判