链表,指针
来源:互联网 发布:windows xp msdn 下载 编辑:程序博客网 时间:2024/05/01 19:43
我们常常要为结构动态地分配内存,这就需要指向结构类型变量的指针,定义指向结构类型变量指针的方法与定义其它类型(如int型、float型)变量指针的方法类似。我们知道:结构类型变量访问其成员要用"﹒"运算符,而结构类型指针访问结构成员要用"->"运算符,它的语法为:
指针变量->成员名
一个指针变量当用来指向一个结构变量时,便称之为结构指针变量。结构指针变量中的值是所指向的结构变量的首地址。
结构的首地址就是结构的第一个成员的地址。内存填充只会出现在各成员之后。
通过结构指针便可访问该结构变量,这与数组指针和函数指针的情况是相同的。
定义结构指针的一般形式为:
结构名 *指针变量名;
以下源自谭浩强:
结构体指针
所谓结构体指针就是指向结构体数据的指针,一个结构体变量的其实地址就是这个结构体变量的指针。如果把一个结构体变量的起始地址存放在一个指针变量中,那么,这个指针变量就指向该结构体变量。指针变量即可以指向结构体变量,也可以指向结构体数组中的元素。但是,指针变量的基类型必须与结构体变量的类型相同。
struct student*pt; /*pt可以指向struct student类型的数据*/
如果p指向一个结构体变量,以下三种形式等价:
1、结构体变量.成员名
2(*p)。成员名
3 p ->成员名
单链表简介
链表中的数据是以节点来表示的,每个结点的构成:元素(数据元素的映象) +指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。以“结点的序列”表示线性表称作线性链表(单链表)
链表的具体存储表示为:
① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)
② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link))
2、链表的结点结构
┌───┬───┐
│data │next │
└───┴───┘
data域--存放结点值的数据域
next域--存放结点的直接后继的地址(位置)的指针域(链域)
3、头指针head和终端结点指针域的表示
单链表中每个结点的存储地址是存放在其前趋结点next域中,而开始结点无前趋,故应设头指针head指向开始结点。
注意:
链表由头指针唯一确定,单链表可以用头指针的名字来命名。
终端结点无后继,故终端结点的指针域为空,即NULL指针域里面保存的是指向下一个结点的指针,建立头结点的时候,一个元素也没有,所以头结点的指针域设为null,这样可以很方便的检测到链表是空的
0 0
- 链表,指针
- 指针数组 指针的指针 二维数组指针 结构体指针 链表
- 链表,指针初级学习心得
- *指针_函数指针、指针控制数组、链表(结构体指针)
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- poj题目分类
- java访问MySQL数据库详解
- 第十四周项目一—折腾二维数组
- JAVA for循环的几种写法和效率
- java数据库备份代码
- 链表,指针
- WWDC2014之iOS使用动态库 framework
- NVL
- 学习
- android 如何用httpclient发请求和利用httphead头信息给服务器
- Eclipse下使用Terrier4.0环境配置
- Java常用位运算
- mssql 字符串颠倒顺序函数 reverse()应用
- sprintf函数的用法总结