数据结构课件-线性表顺序表
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
typedef struct
{ datatype data[maxsize]; int length;
定义线性表结构
} sequencelist;
相当于:
数据域:存放结点
可以在循环外把listLength(L)
while(i<listLength(list))的值保存起来在后面使用吗?
{
getElem(list, i,&x);
j=i+1;
while(j<=listLength (list))
{
getElem (L,j,&y);
if(x==y) deleteElem(list,j);
线性表
1
精选ppt
程序 = 数据结构+算法
线性结构:线性表,栈,队列 数据结构
非线性结构:树,图
数据结构的研究内容:
• 逻辑结构:数据元素间的客观联系
• 存储结构:数据在计算机内部的存储方法
• 算法研究
精选ppt
2
在各种程序设计与软件开发中都要涉及到对数 据的组织、存储、管理和处理
在环境领域:不同环境监测点的监测指标统计 在土地领域:不同宗地的属性 在测绘领域:外业测绘信息的存储,各测点三维坐
13
• 取直接前趋 priorElem(L, cur_e,&prior_e) • 取直接后继 nextElem(L, cur_e,&next_e)
学号 01 02 03
04 … 30
成绩 78 90 87
84 … 83
精选ppt
PRIOR(L, 87)
NEXT(L, 87)
14
对线性表的所有复杂操作都可以由以上操作完成
else j++;
}
i++;
}
}
精选ppt
16
THE NEXT IS
线性表的存储结构及相应算法的实现
• 顺序存储:顺序表 数组
• 链接存储:链表
指针
精选ppt
17
2.2 线性表的顺序存储结构
2.2.1 顺序表 用一组连续的存储单元依次存储线性表的元素
Loc(ai+1)=Loc(ai) + c Loc(ai)=Loc(a1) + (i-1)*c 1≤i≤n c为线性表每个元素占用的存储单元
学号 01 02 03 …
成绩 78 90 84 …
精选ppt
11
插入 insertElem(&L,index,e):在index位置插入值 为e的元素 insertElem(list, 3, 87)
学号 01 02 03 … 30
成绩 78 90 84 … 83
学号 01 02
03 04 … 31
精选ppt
7
2.1.2 线性表的ADT表示
ADT List{
数数2,据据…对关…象系n}::LR=={{a〈i | aaii-∈1,元ai素〉集| a合i-1,,ia=i∈1,元2素,集…合n,,ni≥=01}, 基本操作:{
构造空表initList(&L) 销毁线性表destroyList(&L)
}
}
精选ppt
8
2.1.3 线性表的运算 清空表 clearList(&L)
clearList(list);
学号 成绩
精选ppt
9
• 取结点 getElem(L, index,&e) getElem (list,2,&e )
序号 01 02 03 …
成绩 78 90 84 …
精选ppt
10
•定位 locateElem(L,x) locateElem (list, 84) == 3
成绩 78 90
87 84 … 83
精选ppt
12
• 删除deleteElem(&L,index) deleteElem (list,3)
学号 01 02 03
04 … 30
成绩 78 90 87
84 … 83
学号 成绩 01 78 02 90
04 84 …… 30 83
精选ppt
学号 成绩 01 78 02 90 03 84 …… 29 83
e.g 清除线性表L中多余的重复结点 • 从i=1开始,每次取第i个元素getElem (L,i,&e) • 对第i个元素后的所有元素进行比较,若值相同则 删除
• 判断完后将i++,继续执行,直到i=listLengh(L)
精选ppt
15
Purge(Linear_List list)
{
int i =1, j, x, y;
清空表 clearList(&L) 求长度 listLength(L) 取结点 getElem(L, index,&e) 定位 locateElem(L,x) 插入 insertElem(&L,index,e) 删除deleteElem(&L,index,&e) 取直接前趋 priorElem(L, cur_e,&prior_e ) 取直接后继 nextElem(L, cur_e,&next_e )
随机存取结构
精选ppt
18
wenku.baidu.com 存储地址
元素序号
b a1 1
b+c a2 2
b+2c a3 3
…
b+(i-1)*c ai i …
b+(n-1)*c an n
b+n*c
备用区
精选ppt
19
用C语言中的向量(一维数组)描述顺序表 typedef int datatype; /*int可以用其它类型代替*/ #define maxsize 1024 /*不加分号,1024可改变*/
标的存储
精选ppt
3
最常见的数据组织方式:表格形式的数据
编号 名称 SO2含量 水质指标 悬浮物指标
宗地号 周长 面积 使用者 土地等级
精选ppt
4
点号 等级
X
Y
H
学号 姓名 性别 籍贯 年龄 成绩
精选ppt
5
2.1 线性表的基本概念和运算
2.1.1 逻辑结构定义
定义:线性表是由n(n≥0)个数据元素a1,a2,……, an构成的有限序列。n为表的长度,n=0时称为空表。 非空的线性表(n>0)记作( a1,a2,……,an )。
数据元素可以有不同的含义,但同一线性表中 的元素必须具有相同的特性。
精选ppt
6
学号 01 02 …
30
姓名 杨晨 李铁 … 祁宏
性别 男 男 … 男
籍贯 北京 辽宁 … 上海
年龄 20 19 … 20
成绩 87 91 … 95
➢在非空的线性表,有且仅有一个开始结点a1,它没 有直接前趋,而仅有一个直接后继a2(或没有后继); ➢有且仅有一个终端结点an,它没有直接后继,而仅 有一个直接前趋a n-1 (或没有前趋) ; ➢其余的内部结点ai(2≦i≦n-1)都有且仅有一个直接 前趋a i-1和一个直接后继a i+1。