《自考数据结构导论--02142第二章-线性表ppt课件.ppt》由会员分享,可在线阅读,更多相关《自考数据结构导论--02142第二章-线性表ppt课件.ppt(110页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第二二章章线线性性表表1在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确第第2 2章章 线性表线性表2.1 2.1 线性表的基本概念线性表的基本概念2.2 2.2 线性表的顺序存储线性表的顺序存储2.3 2.3 线性表的链接存储线性表的链接存储2.4 2.4 其它运算在单链表上的实现其它运算在单链表上的实现2.5 2.5 其它链表其它链表2.6 2.6 顺序实现与连接实现的比较顺序实现与连接实现的比较2.7 2.7 小结小结2在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确
2、3在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确本章总述本章主要讨论了线性表及它的两种存储实现:顺序实现和链接实现;另外,简单介绍了串这种特殊的线性表的运算和存储实现。线性表线性表是一种最简单最常见的数据结构数据结构4在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确本章重点本章重点 线性结构的定义和特点;线性表的运算;顺序表和单链表的组织方法和算法设计。本章难点本章难点 单链表上的算法设计。5在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅
3、入深,所提出的问题也很明确字母表字母表(A,B,C,D.Z)(A,B,C,D.Z)数字表数字表(0,1,2,3,4,5,6,7,8,9)(0,1,2,3,4,5,6,7,8,9)10011001张三张三0808信管信管1 1班班1985.1.11985.1.12008.9.12008.9.1xxxxxxxxxxxxxxxxxx10021002李四李四0808信管信管1 1班班1986.2.11986.2.12008.9.12008.9.1xxxxxxxxxxxxxxxxxx10031003王五王五0808信管信管1 1班班1986.3.11986.3.12008.9.12008.9.1xxxx
4、xxxxxxxxxxxxxx学生名单学生名单6在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确问题:线性结构的特点?7在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确2.1 2.1 线性表的基本概念线性表的基本概念线性表线性表是由是由n n(n0n0)个数据元素(结点)个数据元素(结点)a a1 1,a a2 2,a an n组成的组成的有限序列有限序列。数据元素的个数数据元素的个数n n定义为表的长度定义为表的长度,n=0 n=0时称为时称为空表空表,记作()或,记作()或
5、 将非空的线性表(将非空的线性表(n n0 0)记作:)记作:L=L=(a a1 1,a a2 2,a an n)数据元素数据元素a ai i(1in1in)只是个抽象符号,其具体)只是个抽象符号,其具体含义在不同情况下可以不同。含义在不同情况下可以不同。8在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确线性表的基本术语:线性表的基本术语:起始结点起始结点、终端结点终端结点、直接前驱直接前驱、直接后继直接后继线性表长度线性表长度,空表空表 L=L=L=L=(a1a1a1a1,a2a2a2a2,anananan)注意注意:线性表中只有一
6、个起始结点,一个终端结点,线性表中只有一个起始结点,一个终端结点,起始结点没有直接前驱,有一个直接后继。起始结点没有直接前驱,有一个直接后继。终端结点有一个直接前驱,没有直接后继。终端结点有一个直接前驱,没有直接后继。除此二结点外,每个结点都有且只有一个直接前驱除此二结点外,每个结点都有且只有一个直接前驱和一个直接后继。和一个直接后继。9在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确线性表的逻辑结构特征线性表的逻辑结构特征对于非空的线性表对于非空的线性表:有且仅有一个起始结点有且仅有一个起始结点a a1 1,没有直接前驱,有,没有直
7、接前驱,有且仅有且仅有一个直接后继一个直接后继a a2 2;有且仅有一个终端结点有且仅有一个终端结点a an n,没有直接后继,有,没有直接后继,有且仅有且仅有一个直接前驱一个直接前驱a an-1n-1;其余的内部结点其余的内部结点a ai i(2in-12in-1)都)都有且仅有有且仅有一个直接前驱一个直接前驱ai-1ai-1和和一个直接后继一个直接后继a ai+1i+1。10在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确线性表的基本运算线性表的基本运算 1 1,初始化,初始化 InitiateInitiate(L)(L)2 2,
8、求表长度,求表长度 LengthLength(L)(L)3 3,取表元,取表元 GetGet(L,i)(L,i)4 4,定位,定位 LocateLocate(L,x)(L,x)5 5,插入,插入 InsertInsert(L,x,i)(L,x,i)6 6,删除,删除 DeleteDelete(L,i)(L,i)区分引用型和加工型操作区分引用型和加工型操作11在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确2.2 2.2 线性表的顺序实现线性表的顺序实现定义定义 顺序表顺序表是线性表的顺序存储存储结构,即是线性表的顺序存储存储结构,即以
9、一段以一段连续内存连续内存存放的线性表存放的线性表此时,此时,内存的顺序性体现了数据间的逻辑关系内存的顺序性体现了数据间的逻辑关系线性表中相邻的结点在存储结构中仍相邻线性表中相邻的结点在存储结构中仍相邻12在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确假定有一组数据,数据间有顺序:假定有一组数据,数据间有顺序:12 10 5 78 56 45 32 88 71 1112 10 5 78 56 45 32 88 71 11此处数据间的顺序即表示数据间的逻辑关系此处数据间的顺序即表示数据间的逻辑关系即线性关系,这一组数据为线性表即线性关
10、系,这一组数据为线性表 0 01 12 23 34 45 56 67 78 89 91111111112121212101010105 5 5 5787878785656565645454545323232328888888871717171线性表的顺序存储结构线性表的顺序存储结构13在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确 0 01 12 23 34 45 56 67 78 89 91111111112121212101010105 5 5 578787878565656564545454532323232888888887
11、1717171假设已知假设已知a1a1地址为地址为Loc(a1)Loc(a1),每个数据占,每个数据占c c个单元个单元则计算则计算aiai地址地址Loc(ai)=Loc(ai)=Loc(ai)=Loc(ai)=Loc(a1)+Loc(a1)+Loc(a1)+Loc(a1)+c*(i-1)c*(i-1)c*(i-1)c*(i-1)a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 14在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确此处数据间的顺序即表示数据间的逻辑关系此处数据间的顺序即表示数据间的逻辑关系即线性关系,这一组
12、数据为线性表即线性关系,这一组数据为线性表0 01 12 23 34 45 56 67 78 89 9顺序存储线性表时,需要存储:顺序存储线性表时,需要存储:存储单元大小、数据个数存储单元大小、数据个数线性表大小:线性表大小:1010线性表长度:线性表长度:7 7所存放数据的类型所存放数据的类型:MaxSizeMaxSizeLengthLengthDataTypeDataType 12121212101010105 5 5 578787878565656564545454532323232 15在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题
13、也很明确a1a2an01length-112n内存data数组下标元素序号maxsize-1备用空间顺序表的结构体定义#define maxsize 100typedef struct datatype datamaxsize;int length;Seqlist;Seqlist L;问题:L有什么成员?16在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确附讲:结构体 结构体是结构体是结构体是结构体是一种一种一种一种构造构造构造构造数据类型数据类型数据类型数据类型 用途:用途:用途:用途:把把把把不同类型不同类型不同类型不同类型的数据
14、组合成一个整体的数据组合成一个整体的数据组合成一个整体的数据组合成一个整体-自定自定自定自定义义义义数据类型数据类型数据类型数据类型 引入结构体的好处:引入结构体的好处:引入结构体的好处:引入结构体的好处:加强数据项之间的联系加强数据项之间的联系加强数据项之间的联系加强数据项之间的联系 如学生的基本信息,包括学号、姓名、性别、年龄、班如学生的基本信息,包括学号、姓名、性别、年龄、班如学生的基本信息,包括学号、姓名、性别、年龄、班如学生的基本信息,包括学号、姓名、性别、年龄、班级、成绩等数据项。这些数据项描述了一个学生的几个不同级、成绩等数据项。这些数据项描述了一个学生的几个不同级、成绩等数据项
15、。这些数据项描述了一个学生的几个不同级、成绩等数据项。这些数据项描述了一个学生的几个不同侧面。侧面。侧面。侧面。nonamesexageclassnograde独立的变量表示:独立的变量表示:独立的变量表示:独立的变量表示:数据项之间无关联数据项之间无关联数据项之间无关联数据项之间无关联nonamesexageclassnograde结构体变量表示:结构体变量表示:结构体变量表示:结构体变量表示:数据项为一个整体数据项为一个整体数据项为一个整体数据项为一个整体charno9;charno9;/学号学号学号学号charname20;charname20;/姓名姓名姓名姓名charsex;char
16、sex;/性别性别性别性别unsignedintage;unsignedintage;/年龄年龄年龄年龄unsignedintclassno;unsignedintclassno;/班级班级班级班级floatgrade;floatgrade;/成绩成绩成绩成绩17在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确1 1 1 1、结构体类型的定义、结构体类型的定义、结构体类型的定义、结构体类型的定义structstruct 结构体类型名结构体类型名结构体类型名结构体类型名 数据类型名数据类型名数据类型名数据类型名11成员名成员名成员名成员
17、名1 1;数据类型名数据类型名数据类型名数据类型名22成员名成员名成员名成员名2 2;数据类型名数据类型名数据类型名数据类型名nn成员名成员名成员名成员名n n;structstruct是是是是关键字关键字关键字关键字,不能省略不能省略不能省略不能省略合法标识符合法标识符合法标识符合法标识符可省可省可省可省:无名结构体无名结构体无名结构体无名结构体成员类型可以是成员类型可以是成员类型可以是成员类型可以是基本型或构造型基本型或构造型基本型或构造型基本型或构造型以分号以分号以分号以分号;结尾结尾结尾结尾 例例例例1 1:structStudent_InfostructStudent_Info ch
18、arno9;charno9;/学号学号学号学号 charname20;charname20;/姓名姓名姓名姓名 charsex;charsex;/性别性别性别性别 unsignedintage;unsignedintage;/年龄年龄年龄年龄 unsignedintclassno;unsignedintclassno;/班级班级班级班级 floatgrade;floatgrade;/成绩成绩成绩成绩;例例例例2 2:structDatestructDate intyear;intyear;/年年年年 intmonth;intmonth;/月月月月 intday;intday;/日日日日;18在
19、整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确 在结构体中数据类型相同的成员,既可逐个、逐行分别在结构体中数据类型相同的成员,既可逐个、逐行分别在结构体中数据类型相同的成员,既可逐个、逐行分别在结构体中数据类型相同的成员,既可逐个、逐行分别定义,也可合并成一行定义,就象一次定义多个变量一样。定义,也可合并成一行定义,就象一次定义多个变量一样。定义,也可合并成一行定义,就象一次定义多个变量一样。定义,也可合并成一行定义,就象一次定义多个变量一样。structStudent_InfostructStudent_Info charno9;c
20、harno9;/学号学号学号学号 charname20;charname20;/姓名姓名姓名姓名 charsex;charsex;/性别性别性别性别 unsignedintage;unsignedintage;/年龄年龄年龄年龄 unsignedintclassno;unsignedintclassno;/班级班级班级班级 floatgrade;floatgrade;/成绩成绩成绩成绩;structStudent_InfostructStudent_Info charno9,name20,sex;charno9,name20,sex;unsignedintage,classno;unsigne
21、dintage,classno;floatgrade;floatgrade;structDatestructDate intyear;intyear;/年年年年 intmonth;intmonth;/月月月月 intday;intday;/日日日日;structDatestructDate intyear,month,day;intyear,month,day;注意:结构类型只是用户自定义的一种数据类型,用注意:结构类型只是用户自定义的一种数据类型,用注意:结构类型只是用户自定义的一种数据类型,用注意:结构类型只是用户自定义的一种数据类型,用来定义描述结构的组织形式来定义描述结构的组织形式来定
22、义描述结构的组织形式来定义描述结构的组织形式,不分配内存,只有用它来定不分配内存,只有用它来定不分配内存,只有用它来定不分配内存,只有用它来定义某个变量时,才会为该变量分配结构类型所需要大小义某个变量时,才会为该变量分配结构类型所需要大小义某个变量时,才会为该变量分配结构类型所需要大小义某个变量时,才会为该变量分配结构类型所需要大小的内存单元。所占内存的大小是它所包含的成员所占内的内存单元。所占内存的大小是它所包含的成员所占内的内存单元。所占内存的大小是它所包含的成员所占内的内存单元。所占内存的大小是它所包含的成员所占内存大小之和。存大小之和。存大小之和。存大小之和。19在整堂课的教学中,刘教
23、师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确structStudent_InfostructStudent_Info charno9,name20,sex;charno9,name20,sex;unsignedintage,classno;unsignedintage,classno;floatgrade;floatgrade;structStudent_Infostudent;structStudent_Infostudent;例:例:例:例:2 2 2 2、结构体变量的定义和引用、结构体变量的定义和引用、结构体变量的定义和引用、结构体变量的定义和引
24、用structstruct 结构体类型名结构体类型名结构体类型名结构体类型名 数据类型名数据类型名数据类型名数据类型名11成员名成员名成员名成员名1 1;数据类型名数据类型名数据类型名数据类型名nn成员名成员名成员名成员名n n;structstruct结构体类型名结构体类型名结构体类型名结构体类型名 变量名列表;变量名列表;变量名列表;变量名列表;结构体变量的定义结构体变量的定义结构体变量的定义结构体变量的定义l l 间接定义法:间接定义法:间接定义法:间接定义法:先定义结构类型,再定义结构变量先定义结构类型,再定义结构变量先定义结构类型,再定义结构变量先定义结构类型,再定义结构变量 9 9
25、字节字节字节字节2020字节字节字节字节1 1字节字节字节字节2 2字节字节字节字节2 2字节字节字节字节4 4字节字节字节字节nononamenamesexsexageageclassnoclassnogradegrade内存映像内存映像内存映像内存映像(BC(BC下下下下)20在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确2 2 2 2、结构体变量的定义和引用、结构体变量的定义和引用、结构体变量的定义和引用、结构体变量的定义和引用structstruct结构体类型名结构体类型名结构体类型名结构体类型名 数据类型名数据类型名数据类
26、型名数据类型名11成员名成员名成员名成员名1 1;数据类型名数据类型名数据类型名数据类型名nn成员名成员名成员名成员名n n;变量名列表变量名列表变量名列表变量名列表;结构体变量的定义结构体变量的定义结构体变量的定义结构体变量的定义l l 直接定义法:直接定义法:直接定义法:直接定义法:定义结构体类型的同时定义结构体变量定义结构体类型的同时定义结构体变量定义结构体类型的同时定义结构体变量定义结构体类型的同时定义结构体变量 structStudent_InfostructStudent_Info charno9;charno9;/学号学号学号学号 charname20;charname20;/姓
27、名姓名姓名姓名 charsex;charsex;/性别性别性别性别 unsignedintage;unsignedintage;/年龄年龄年龄年龄 unsignedintclassno;unsignedintclassno;/班级班级班级班级 floatgrade;floatgrade;/成绩成绩成绩成绩 student1,student2student1,student2;structstruct charno9;charno9;/学号学号学号学号 charname20;charname20;/姓名姓名姓名姓名 charsex;charsex;/性别性别性别性别 unsignedintage
28、;unsignedintage;/年龄年龄年龄年龄 unsignedintclassno;unsignedintclassno;/班级班级班级班级 floatgrade;floatgrade;/成绩成绩成绩成绩 student1,student2student1,student2;或或或或无名结构体定义,无名结构体定义,无名结构体定义,无名结构体定义,变量只能一次定义变量只能一次定义变量只能一次定义变量只能一次定义 21在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确例例例例 structstudentstructstudentint
29、num;intnum;charname20;charname20;charsex;charsex;intage;intage;floatscore;floatscore;charaddr30;charaddr30;stu1,stu2stu1,stu2;if(if(stu1=stu2stu1=stu2).(.()例例例例 structstudentstructstudentintnum;intnum;charname20;charname20;charsex;charsex;intage;intage;floatscore;floatscore;charaddr30;charaddr30;stu
30、,*pstu=&stustu,*pstu=&stu;strcpy(stu.name,zhangMing);strcpy(stu.name,zhangMing);stu.score=80;stu.score=80;pstu-score+=10;pstu-score+=10;printf(%s%f,stu.name,(*pstu).score);printf(%s%f,stu.name,(*pstu).score);结构体变量的引用结构体变量的引用结构体变量的引用结构体变量的引用&引用规则引用规则引用规则引用规则l l结构体变量结构体变量结构体变量结构体变量不能整体引用不能整体引用不能整体引用不能
31、整体引用,只能引用变量只能引用变量只能引用变量只能引用变量成员成员成员成员引用方式:引用方式:引用方式:引用方式:结构体变量名结构体变量名结构体变量名结构体变量名.成员名成员名成员名成员名 /非指针型结构体变量的引用非指针型结构体变量的引用非指针型结构体变量的引用非指针型结构体变量的引用l l可以将一个可以将一个可以将一个可以将一个结构体变量赋值给另一个结构体变量结构体变量赋值给另一个结构体变量结构体变量赋值给另一个结构体变量结构体变量赋值给另一个结构体变量l l结构体嵌套时结构体嵌套时结构体嵌套时结构体嵌套时逐级引用逐级引用逐级引用逐级引用结构体指针结构体指针结构体指针结构体指针-成员名成员
32、名成员名成员名 或或或或(*结构体指针)结构体指针)结构体指针)结构体指针).成员名成员名成员名成员名/指针型结构体变量的引用指针型结构体变量的引用指针型结构体变量的引用指针型结构体变量的引用成员成员成员成员(分量分量分量分量)运算符运算符运算符运算符结合性结合性结合性结合性:从左向右从左向右从左向右从左向右成员成员成员成员(分量分量分量分量)运算符运算符运算符运算符结合性结合性结合性结合性:从左向右从左向右从左向右从左向右例例例例 structstudentstructstudentintnum;intnum;charname20;charname20;charsex;charsex;int
33、age;intage;floatscore;floatscore;charaddr30;charaddr30;stu1,stu2stu1,stu2;stu1.num=10;stu1.num=10;stu1.score=85.5;stu1.score=85.5;stu1.score+=stu2.score;stu1.score+=stu2.score;stu1.age+;stu1.age+;例例例例 structstudentstructstudentintnum;intnum;charname20;charname20;charsex;charsex;intage;intage;floatsc
34、ore;floatscore;charaddr30;charaddr30;stu1,stu2stu1,stu2;printf(“%d,%s,%c,%d,%f,%sn”,printf(“%d,%s,%c,%d,%f,%sn”,stu1stu1);();()stu1=101,“WanLin”,M,19,87.5,“DaLian”;(stu1=101,“WanLin”,M,19,87.5,“DaLian”;()结构体变量名结构体变量名结构体变量名结构体变量名.成员名成员名成员名成员名.子成员名子成员名子成员名子成员名最低级子成员名最低级子成员名最低级子成员名最低级子成员名例例例例 structstu
35、dentstructstudentintnum;intnum;charname20;charname20;charsex;charsex;intage;intage;floatscore;floatscore;charaddr30;charaddr30;stu1,stu2stu1,stu2;Stu2=stu1;(Stu2=stu1;()例例例例 structstudentstructstudentintnum;intnum;charname20;charname20;structdatestructdateintmonth;intmonth;intday;intday;intyear;inty
36、ear;birthdaybirthday;stu1,stu2,*pstu=&stu1stu1,stu2,*pstu=&stu1;numnumnamenamebirthdaybirthdaymonthmonthdaydayyearyearstu1.birthday.month=12;stu1.birthday.month=12;pstu1-birthday.year=2008;pstu1-birthday.year=2008;22在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确3 3 3 3、结构体变量的赋值、结构体变量的赋值、结构体变
37、量的赋值、结构体变量的赋值 结构体变量初始化赋值结构体变量初始化赋值结构体变量初始化赋值结构体变量初始化赋值l l先定义结构体类型,再定义结构体变量时赋初值先定义结构体类型,再定义结构体变量时赋初值先定义结构体类型,再定义结构体变量时赋初值先定义结构体类型,再定义结构体变量时赋初值structstruct 结构体类型名结构体类型名结构体类型名结构体类型名初值表初值表初值表初值表;structstruct结构体类型名结构体类型名结构体类型名结构体类型名 变量名变量名变量名变量名=成员成员成员成员1 1的值,的值,的值,的值,成员成员成员成员n n的值的值的值的值;注意:注意:注意:注意:赋初值时
38、,赋初值时,赋初值时,赋初值时,中间的数据顺序必须与结构体成员中间的数据顺序必须与结构体成员中间的数据顺序必须与结构体成员中间的数据顺序必须与结构体成员的定义顺序一致,否则就会出现混乱。的定义顺序一致,否则就会出现混乱。的定义顺序一致,否则就会出现混乱。的定义顺序一致,否则就会出现混乱。structStudent_InfostructStudent_Infostu=20020306,ZhangMing,M,18,1,90;stu=20020306,ZhangMing,M,18,1,90;nononamenamesexsex ageage classnoclassno gradegradestr
39、uctStudent_InfostructStudent_Infostu=18,ZhangMing,M,20020306,1,90;stu=18,ZhangMing,M,20020306,1,90;structDatestructDate intyear;intyear;/年年年年 intmonth;intmonth;/月月月月 intday;intday;/日日日日;structStu_InfostructStu_Info charno9;charno9;/学号学号学号学号 charname20;charname20;/姓名姓名姓名姓名 charsex;charsex;/性别性别性别性别 s
40、tructDatebirthday;structDatebirthday;/生日生日生日生日 unsignedintclassno;unsignedintclassno;/班级班级班级班级 floatgrade;floatgrade;/成绩成绩成绩成绩;structStu_InfostructStu_Infostu=20020306,ZhangMing,M,stu=20020306,ZhangMing,M,1986,12,10,1986,12,10,1,1,90;90;23在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确3 3 3 3
41、、结构体变量的赋值、结构体变量的赋值、结构体变量的赋值、结构体变量的赋值 结构体变量初始化赋值结构体变量初始化赋值结构体变量初始化赋值结构体变量初始化赋值l l定义结构体类型的同时,定义结构体变量并赋初值定义结构体类型的同时,定义结构体变量并赋初值定义结构体类型的同时,定义结构体变量并赋初值定义结构体类型的同时,定义结构体变量并赋初值structstruct 结构体类型名结构体类型名结构体类型名结构体类型名 初值表初值表初值表初值表 变量名变量名变量名变量名=成员成员成员成员1 1的值,成员的值,成员的值,成员的值,成员2 2的值,的值,的值,的值,成员成员成员成员n n的值的值的值的值;st
42、ructDatestructDate intyear,month,day;intyear,month,day;birthday=1986,12,10;birthday=1986,12,10;structstruct intyear,month,day;intyear,month,day;birthday=1986,12,10;birthday=1986,12,10;或或或或structStudent_InfostructStudent_Info charno9;charno9;/学号学号学号学号 charname20;charname20;/姓名姓名姓名姓名 charsex;charsex;/
43、性别性别性别性别 unsignedintage;unsignedintage;/年龄年龄年龄年龄 unsignedintclassno;unsignedintclassno;/班级班级班级班级 floatgrade;floatgrade;/成绩成绩成绩成绩 student=student=20020306,ZhangMing,M,18,1,90;20020306,ZhangMing,M,18,1,90;24在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确strcpy(stu1.no,stu.no);strcpy(stu1.no,stu
44、.no);strcpy(stu1.name,stu.name);strcpy(stu1.name,stu.name);stu1.sex=stu.sex;stu1.sex=stu.sex;stu1.age=stu.age;stu1.age=stu.age;stu1.classno=stu.classno;stu1.classno=stu.classno;stu1.grade=stu.gradestu1.grade=stu.grade;structStudent_Infostu;structStudent_Infostu;strcpy(stu.no,20020306);strcpy(stu.no,
45、20020306);strcpy(stu.name,ZhangMing);strcpy(stu.name,ZhangMing);stu.sex=M;stu.sex=M;stu.age=18;stu.age=18;stu.classno=1;stu.classno=1;stu.grade=90;stu.grade=90;structStudent_Infostu1;structStudent_Infostu1;stu1=stu;stu1=stu;3 3 3 3、结构体变量的赋值、结构体变量的赋值、结构体变量的赋值、结构体变量的赋值 结构体变量在程序中赋值结构体变量在程序中赋值结构体变量在程序中赋
46、值结构体变量在程序中赋值 如果在定义结构体变量时并未对其赋初始值,那么在程如果在定义结构体变量时并未对其赋初始值,那么在程如果在定义结构体变量时并未对其赋初始值,那么在程如果在定义结构体变量时并未对其赋初始值,那么在程序中要对它赋值的话,就只能一个一个地对其成员序中要对它赋值的话,就只能一个一个地对其成员序中要对它赋值的话,就只能一个一个地对其成员序中要对它赋值的话,就只能一个一个地对其成员逐一赋值逐一赋值逐一赋值逐一赋值,或者或者或者或者用已赋值的同类型的结构体变量对它赋值用已赋值的同类型的结构体变量对它赋值用已赋值的同类型的结构体变量对它赋值用已赋值的同类型的结构体变量对它赋值 逐一赋值逐
47、一赋值逐一赋值逐一赋值 利用已赋值的结构利用已赋值的结构利用已赋值的结构利用已赋值的结构体变量赋值体变量赋值体变量赋值体变量赋值 memcpymemcpy(&stu1,&stu,sizeof(structStudent_Info);(&stu1,&stu,sizeof(structStudent_Info);25在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确结论结论1.1.顺序表是用一维数组实现的线性表,数组下顺序表是用一维数组实现的线性表,数组下标可以看成是元素的相对地址标可以看成是元素的相对地址2.2.逻辑上相邻的元素,存储在物
48、理位置也相邻逻辑上相邻的元素,存储在物理位置也相邻的单元中的单元中顺序存储结构的特点顺序存储结构的特点1.1.线性表的逻辑结构与存储结构一致线性表的逻辑结构与存储结构一致 2.2.可以对数据元素实现随机读取可以对数据元素实现随机读取26在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确图图2-1线性表顺序存储结构示意图线性表顺序存储结构示意图27在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确设线性表中所有结点的类型相同,则每个结点所占用设线性表中所有结点的类型相同,则每个结点
49、所占用存储空间大小亦相同。存储空间大小亦相同。假设表中每个结点占用假设表中每个结点占用L L个存储单元,其中第一个单元个存储单元,其中第一个单元的存储地址则是该结点的存储地址,的存储地址则是该结点的存储地址,并设表中开始结点并设表中开始结点a a1 1的存储地址是的存储地址是d d,那么结点,那么结点a ai i的存的存储地址储地址LOCLOC(a ai i)LOC(ai)=d+(i-1)*L 28在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确若线性表采用顺序存储结构,每个元素占用若线性表采用顺序存储结构,每个元素占用4个存储个存储
50、单元,第单元,第1个元素的存储地址为个元素的存储地址为100,则第则第12个元个元素的存储地址是素的存储地址是 。A112 B144 C148 0412答案:答案:B29在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确基本运算在顺序表上的实现基本运算在顺序表上的实现插入、删除、定位插入、删除、定位30在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确1.1.插入插入线性表的插入运算是指在表的第线性表的插入运算是指在表的第i i(1in+11in+1)个位置上,插入一个新结点)个