- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Ch2_线性表要点
第二章 线性表 顺序表 单链表 循环链表、双向链表 线性结构 线性数据结构包括: 线性表(顺序表和单链表)*** 栈*** 队列*** 特点是:数据元素之间呈一对一的线性关系,其逻辑结构是线性结构。 第二章 线性表 1、线性表的定义、逻辑结构特点及基本运算** 2、线性表的顺序存储结构及基本运算*** 3、线性表的链式存储结构及基本运算*** 4、数组的逻辑结构定义及其存储方式 2.1 线性表的定义及其操作*** 2.1.1 线性表:n(n≥0)个具有相同特性的数据元素的有限序列。其中:n表示线性表的长度,即数据元素的个数。 线性表的数据元素之间存在一对一的关系 线性表举例 例1、26个英文字母组成的字母表 (A,B,C、…、Z) 例2、某校从1978年到1983年各种型号的计算机拥有量的变化情况。 (6,17,28,50,92,188) 例3、Fibonacci数列(前10项): (0,1,1,2,3,5,8,13,21,34) 2.1.2 线性表的运算 ⑴ 初始化线性表 ⑵ 判读线性表的长度, ⑷ 读取表是否为空 ⑶ 求线性表中第i个元素 ⑸ 查找满足给定条件的数据元素 ⑹ 在线性表的第i个位置之前插入一个新的数据元素 ⑺ 删除线性表中的第i个数据元素 ⑻ 表置空 ⑼ 查找表中第i个元素的前驱 ⑽ 查找表中第i个元素的后继 ⑾ 按一个或多个数据项值的递增或递减次序重新排列线性表中的数据元素…… 线性表的存储结构 线性表的存储结构有两种,顺序存储结构和链式存储结构。--解决如何存放数据的问题 用顺序存储结构存放的线性表称为顺序表。 用链式存储结构存放的线性表称为线性链表。 2.2 线性表的顺序存储结构-顺序表** 2.2.1 顺序表的定义 在内存中开辟一片连续的存储空间,用一组连续的存储单元依次存放线性表的数据元素,这种存储方式叫做线性表的顺序存储结构,简称顺序表。 特点: 在逻辑上相邻的数据元素,它们的物理位置也是邻接的。即线性关系利用物理上的相邻关系来体现。 顺序表*** 线性表中第i个数据元素的存储位置是:P18 Loc(ai)=Loc(a1)+ (i-1)*m 其中,m表示每个元素占用的存储单元个数 顺序表的类型定义** #define LISTSIZE 100 /*100表示线性表可能的最大数据元素数目*/ typedef int DataType /*DataType表示数据元素类型,此处定义为int*/ typedef struct { /*存放线性表元素的数组,关系隐含*/ DataType items[LISTSIZE]; int length; /*表示线性表的长度*/ }SqList; /* SqList是数据类型,此处表示线性表的顺序存储结构(???)*/ 顺序表的图示*** P19 算法2.2 3. 判断顺序表是否为空 (2)插入运算*** 问题描述 以a1开始的线性表中,在第i个元素前插入一个新元素new_node。 插入运算*** 从ai到an开始向后逐个移动 从an开始向前每个元素向后移一格 插入运算*** 算法 int insert( SqList *L, int i, DataType x){ }; 输入: *L为SqList顺序表类型指针变量 i:插入的位置,在其之前插入 x:新元素 输出:--就是函数的返回值 0 错误 1 正确 P21 插入算法2.4*** int insert( SqList *L, int pos, DataType item) { int j; if (L-length == LISTSIZE) // “溢出”处理 { printf(“overflow!/n”); return 0; } if ( (pos=0) || (pos L-Length+1)) // pos值“超出”处理 { printf(“position is error!/n”); return 0; } for (j = L-length -1; j =pos-1; j--) L- items[j+1] = L- items[j]; //后移一个位置 L- items[pos-1] = item; //新的数据元素写入 L-length++; //线性表的长度增加1 return 1; } 插入算法2.4-时间复杂度 时间复杂度:O
原创力文档


文档评论(0)