理学数据结构线性表.pptx
《理学数据结构线性表.pptx》由会员分享,可在线阅读,更多相关《理学数据结构线性表.pptx(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、附附1 1 什么是指针什么是指针?指针如何引用指针如何引用?什么是指针什么是指针?i20003int i=3;int i=3;2000pointerint*pointer;int*pointer;Pointer=&i;Pointer=&i;3001第第1页页/共共37页页如如:用:用pi,pj,pkpi,pj,pk来存放来存放i,j,ki,j,k的地址的地址200020042008 35 8300130053009200020042008pipjpkijk指针的含义:指针即变量的地址。(如2000、2004、2008等)指针变量:含义:用于存放指针(地址)的变量。第第2页页/共共37页页定义方
2、法:数据类型 *指针变量名 例 int*p;数据类型 *指针变量名=变量地址 例 int*p=&i;其中 1)数据类型:指针变量所指向目标单元的值的类型。2)*:指针变量的定义符 3)变量名 :目标变量在内存中的位置(地 址)第第3页页/共共37页页 与指针相关的运算符与指针相关的运算符(1)&:(1)&:取地址运算符:取地址运算符:作用:用于变量名之前,表示该变量的存储地址。作用:用于变量名之前,表示该变量的存储地址。(2)*:(2)*:指针运算符指针运算符(间接访问间接访问)作用:用于指针变量名之前,获取该指针所指单元的值。作用:用于指针变量名之前,获取该指针所指单元的值。例如,定义和语句
3、如下:例如,定义和语句如下:int i=10;int*p,*p1;p=&i;*p=30;p1=p;p表示指针表示指针部分,属于指部分,属于指针类型,其内容为变针类型,其内容为变量量i的存储地址;的存储地址;*p表示指针所指的变量表示指针所指的变量部分,部分,属于属于int类型。类型。p1指向指向p所所指的变量指的变量第第4页页/共共37页页需要注意的是:需要注意的是:“*”操作符在指针上的两种用途要区分开:操作符在指针上的两种用途要区分开:定义或声明时,建立一个指针;定义或声明时,建立一个指针;执行时间接引用一个指针。执行时间接引用一个指针。定义指针定义指针间接引用一个指针间接引用一个指针例如
4、:例如:int x,*p;p=&x;*p=20;第第5页页/共共37页页重要概念:重要概念:指针变量也有各种类型,但指针变量的值只能指针变量也有各种类型,但指针变量的值只能是整型值。是整型值。point=&x;()不允许直接对指针变量赋常量值。不允许直接对指针变量赋常量值。如:如:int*point;point=1000;()只能给指针变量一个具有地址属性的值。只能给指针变量一个具有地址属性的值。如:如:int x,*point;第第6页页/共共37页页注意:在没赋初值之前,指针变量的内容将是不确定的,即指针没有确定的指向。如果此时引用指针指向的变量,将会产生不可预料的后果。例如,int*pt
5、r;*ptr=100;一定要注意哦一定要注意哦!第第7页页/共共37页页 结构体类型的认识实体:实体:指客观世界的人、事、物、概念等。指客观世界的人、事、物、概念等。属性:属性:实体的特征,用以描述实体。实体的特征,用以描述实体。学生是个实体,可以通过以下属性给以描述。学生是个实体,可以通过以下属性给以描述。附附2:结构数据类型的结构数据类型的C表示法表示法第第8页页/共共37页页上海上海57857887.6.1387.6.13女女赵六赵六060411136060411136山东山东55055086.12.186.12.1男男王五王五060411135060411135浙江浙江56256286
6、.13.2586.13.25女女李四李四060411102060411102江苏江苏58458487.4.1987.4.19男男张三张三060411101060411101生生 源源成成 绩绩出生日期出生日期性性 别别姓姓 名名学学 号号 这是一个二维表,但却无法用二维数组来描述它,这是一个二维表,但却无法用二维数组来描述它,原因是用来描述学生信息的五项数据类型各不相同。原因是用来描述学生信息的五项数据类型各不相同。能否能否将一个学生的信息作为一个完整的类型存放呢?将一个学生的信息作为一个完整的类型存放呢?为了能方为了能方便地处理此类问题,在便地处理此类问题,在C C语言中,规定了一种新的数据
7、类语言中,规定了一种新的数据类型型“结构体类型结构体类型”,可有效地表示类型互异又逻辑相关的,可有效地表示类型互异又逻辑相关的数据实体。数据实体。第第9页页/共共37页页对于指向结构类型的指针变量,可说明为对于指向结构类型的指针变量,可说明为:nodenodenodenode *p,*q;/或用或用 struct studentstudent*p,*q;/或用或用 pointerpointer p,q;p,q;/注:上面已经定义了注:上面已经定义了node为用户自定义的为用户自定义的studentstudent类型。类型。类型定义写为:类型定义写为:typedef structtypedef
8、struct student /studentstudent是自定义结构类型名称是自定义结构类型名称 char data;/定义数据域的变量名及其类型定义数据域的变量名及其类型 structstruct studentstudent*next;/定义指针域的变量名及其类型定义指针域的变量名及其类型node,*pointer;/nodenode是是studentstudent结结构构类类型型的的类类型型替替代代,*pointer*pointer是是指指针针型型的的studentstudent结结构构类类型型的的替替代代,也也是是数数据类型据类型*/第第10页页/共共37页页 当把一个结构体变量的
9、起始地址赋值给一个指针变量时,就称该指针指向这个结构体变量,该指针为结构体类型指针。定义形式为:结构体类型 *指针变量名;例如,struct student int num;char name20;float score;wang,stud3;struct student*p,*q;第第11页页/共共37页页 令令p=&wang;q=stud;p=&wang;q=stud;则指针的指向关系如图所示:则指针的指向关系如图所示:1003WangWu85wangp1001ZhangSan931002LiSi90.5stud0stud1qq+1第第12页页/共共37页页附附3:介绍介绍C的三个有用的库
10、函数的三个有用的库函数/算符(都在算符(都在 中):中):sizeof(x)计算变量计算变量x x的长度(字节数);的长度(字节数);malloc(m)开辟开辟m m字节长度的地址空间,并返回这段空间字节长度的地址空间,并返回这段空间的首地址;的首地址;free(p)释放指针释放指针p p所指变量的存储空间,即彻底删除所指变量的存储空间,即彻底删除一个变量。一个变量。第第13页页/共共37页页动态数组简介动态数组简介先为顺序表空间设定一个初始分配量,一旦因先为顺序表空间设定一个初始分配量,一旦因插入元素而空间不足时,可为顺序表增加一个固定长插入元素而空间不足时,可为顺序表增加一个固定长度的空间
11、增量。度的空间增量。#define LIST_INIT_SIZE 100/存储空间的初始分配量存储空间的初始分配量#define LISTINCREMENT 10/存储空间的分配增量存储空间的分配增量Typedef struct ElemType*elem;/表基址表基址(用指针用指针*elemelem表示表示)int length;/表长度(表长度(表中有多少个元素表中有多少个元素)int listsize;/当前分配的表尺寸(当前分配的表尺寸(以以sizeof(ElemType)sizeof(ElemType)为单位为单位)SqList;注:三个分量可简写为:注:三个分量可简写为:L.el
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 理学 数据结构 线性
限制150内