数据结构第2章+线性表B课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据结构第2章+线性表B课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 线性 课件
- 资源描述:
-
1、课堂讨论:课堂讨论:顺序表各种操作算法的顺序表各种操作算法的“通式通式”该如何书写?该如何书写?采用采用抽象数据类型抽象数据类型来表示来表示(见教材(见教材P19页)页)顺序表的存储结构是一维数组,如果插入的元顺序表的存储结构是一维数组,如果插入的元素个数素个数超过超过数组定义的数组定义的长度长度怎么办?怎么办?采用采用动态分配动态分配的一维数组的一维数组动态数组如何实现动态数组如何实现(见教材见教材P22和和P24)#define#define List_Init_SizeList_Init_Size 100 /100 /初始空间初始空间#define#define List_Increme
2、ntList_Increment 10 /10 /分配增量分配增量 L.listsizeL.listsize=List_Init_Size;=List_Init_Size;If(L.length=If(L.length=L.listsizeL.listsize)L.listsizeL.listsize=List_IncrementList_Increment;P23P23的的mallocmalloc()()函数与函数与P24P24的的reallocrealloc()()函数函数有什么不同?有什么不同?附附1 1 什么是指针什么是指针?指针如何引用指针如何引用?什么是指针什么是指针?i20003
3、intint i=3;i=3;2000pointerintint *pointer;pointer;Pointer=&i;Pointer=&i;3001如如:用:用pi,pj,pkpi,pj,pk来存放来存放i,j,ki,j,k的地址的地址200020042008 35 8300130053009200020042008pipjpkijk指针的含义:指针即变量的地址。(如2000、2004、2008等)指针变量:含义:用于存放指针(地址)的变量。定义方法:数据类型 *指针变量名 例 int*p;数据类型 *指针变量名=变量地址 例 int*p=&i;其中 1)数据类型:指针变量所指向目标单元的
4、值的类型。2)*:指针变量的定义符 3)变量名 :目标变量在内存中的位置(地 址)与指针相关的运算符与指针相关的运算符(1)&:(1)&:取地址运算符:取地址运算符:作用:用于变量名之前,表示该变量的存储地址。作用:用于变量名之前,表示该变量的存储地址。(2)(2)*:指针运算符指针运算符(间接访问间接访问)作用:用于指针变量名之前,获取该指针所指单元的值。作用:用于指针变量名之前,获取该指针所指单元的值。例如,定义和语句如下:例如,定义和语句如下:int i=10;int*p,*p1;p=&i;*p=30;p1=p;p表示指针表示指针部分,属于指部分,属于指针类型,其内容为变针类型,其内容为
5、变量量i的存储地址;的存储地址;*p表示指针所指的变量表示指针所指的变量部分,部分,属于属于int类型。类型。p1指向指向p所所指的变量指的变量需要注意的是:需要注意的是:“*”操作符在指针上的两种用途要区分开:操作符在指针上的两种用途要区分开:定义或声明时,建立一个指针;定义或声明时,建立一个指针;执行时间接引用一个指针。执行时间接引用一个指针。定义指针定义指针间接引用一个指针间接引用一个指针例如:例如:int x,*p;p=&x;*p=20;重要概念:重要概念:指针变量也有各种类型,但指针变量的值只能指针变量也有各种类型,但指针变量的值只能是整型值。是整型值。point=&x;()不允许直
6、接对指针变量赋常量值。不允许直接对指针变量赋常量值。如:如:int*point;point=1000;()只能给指针变量一个具有地址属性的值。只能给指针变量一个具有地址属性的值。如:如:int x,*point;注意:在没赋初值之前,指针变量的内容将是不确定的,即指针没有确定的指向。如果此时引用指针指向的变量,将会产生不可预料的后果。例如,int*ptr;*ptr=100;一定要注意哦一定要注意哦!结构体类型的认识实体:实体:指客观世界的人、事、物、概念等。指客观世界的人、事、物、概念等。属性:属性:实体的特征,用以描述实体。实体的特征,用以描述实体。学生是个实体,可以通过以下属性给以描述。学
7、生是个实体,可以通过以下属性给以描述。实体NameScoreAgeSexNumAddr实体实体:属性属性:附附2 2:结构数据类型的结构数据类型的C C表示法表示法上海上海57857887.6.1387.6.13女女赵六赵六060411136060411136山东山东55055086.12.186.12.1男男王五王五060411135060411135浙江浙江56256286.13.2586.13.25女女李四李四060411102060411102江苏江苏58458487.4.1987.4.19男男张三张三060411101060411101生生 源源成成 绩绩出生日期出生日期性性 别别姓
8、姓 名名学学 号号 这是一个二维表,但却无法用二维数组来描述它,这是一个二维表,但却无法用二维数组来描述它,原因是用来描述学生信息的五项数据类型各不相同。原因是用来描述学生信息的五项数据类型各不相同。能否能否将一个学生的信息作为一个完整的类型存放呢?将一个学生的信息作为一个完整的类型存放呢?为了能方为了能方便地处理此类问题,在便地处理此类问题,在C C语言中,规定了一种新的数据类语言中,规定了一种新的数据类型型“结构体类型结构体类型”,可有效地表示类型互异又逻辑相关的,可有效地表示类型互异又逻辑相关的数据实体。数据实体。对于指向结构类型的指针变量,可说明为对于指向结构类型的指针变量,可说明为:
9、*p,*q;/或用或用 struct studentstudent*p,*q;/或用或用 pointerpointer p,q;p,q;/注:上面已经定义了注:上面已经定义了node为用户自定义的为用户自定义的studentstudent类型。类型。类型定义写为:类型定义写为:student /studentstudent是自定义结构类型名称是自定义结构类型名称 char data;/定义数据域的变量名及其类型定义数据域的变量名及其类型 studentstudent*next;/定义指针域的变量名及其类型定义指针域的变量名及其类型node,*pointer;/nodenode是是student
10、student结构类型的类型替代结构类型的类型替代,*pointerpointer是指针型的是指针型的studentstudent结构类型的替代,也是数据类结构类型的替代,也是数据类型型*/当把一个结构体变量的起始地址赋值给一个指针变量时,就称该指针指向这个结构体变量,该指针为结构体类型指针。定义形式为:结构体类型 *指针变量名;例如,struct student int num;char name20;float score;wang,stud3;struct student*p,*q;令令p=&wangp=&wang;q=stud;q=stud;则指针的指向关系如图所示:则指针的指向关系如
11、图所示:1003WangWu85wangp1001ZhangSan931002LiSi90.5stud0stud1qq+1附附3:介绍介绍C的三个有用的库函数的三个有用的库函数/算符(都在算符(都在 中):中):sizeof(x)计算变量计算变量x x的长度(字节数);的长度(字节数);malloc(m)开辟开辟m m字节长度的地址空间,并返回这段空间字节长度的地址空间,并返回这段空间的首地址;的首地址;free(p)释放指针释放指针p p所指变量的存储空间,即彻底删除所指变量的存储空间,即彻底删除一个变量。一个变量。先为顺序表空间设定一个初始分配量,一旦因先为顺序表空间设定一个初始分配量,一
展开阅读全文