线性表基础知识(一)
来源:互联网 发布:js工厂方法 编辑:程序博客网 时间:2024/05/01 09:20
定义
线性表是最简单、最基本、也是最常用的一种线性结构,它有顺序存储和链式存储两种存储方式,主要的基本运算为插入、删除、和查找
形式化定义
liner_list=(D,R);
其中,D={a|a属于数据对象E,a=1,2,3....,n,n>=0} R={N}, N={<ai-1,ai>|ai-1,ai属于数据对象E,i=2,3,...n}
N是一个序偶的集合,它表示线性表中数据元素之间的相邻关系
线性表的基本运算
INITIATE (L) 初始化操作|设定一个空的线性表L
LENGTH (L) 求长度函数|函数值为线性表L中数据元素的个数
GET (L,i) 取元素函数|1<=i<=LENGTH(L)时返回L中第i个数据元素,否则为空元素NULL。i称为该数据元素在L中的 位序
PRIOR (L,elm) 求前驱函数|elm为L中的一个数据元素,若它的位序大于1,则函数值为elm前驱,否则为NULL
NEXT(L,elm) 求后继函数|若elm位序小于表长,则函数值为elm的后继,否则为NULL
LOCATE(L,x) 定位函数|给定值x,若x不在表中,则返回0,否则,返回x在表中第一次出现时的位许
INSERTE(L,i,b) 前插操作|在第i个元素之前插入新元素b,i的取值范围为:1<=i<=n+1;i=n+1表示在表尾插入,n为表长
DELETE(L,i) 删除操作|删除线性表L中的第i个元素,1<=i<=n
EMPTY(L) 判空表函数|若L为空表,则返回布尔值true,否则返回布尔值false
CLEAR(L) 表置空操作|将L置为空表
例子:求两个集合的并,即A=A并B
分析:设A、B分别由两个线性表LA和LB表示,要求将LB中存在而LA中不存在的DE插入到表LA中
算法思想:
1.依次从LB中取出一个DE
2.判断LA中是否存在
3.若不存在,则插入到LA中
算法实现:
类PASCAL
PROC union(VAR LA:Linear_list;LB:Linear_list);
{将所有在LB中存在而LA中不存在的DE插入到LA中去}
n:LENGTH(LA):{确定线性表LA的长度}
FOR i:=1 TO LENGTH(LB) DO
[x:GET(LB,i);{取LB中第i个数据元素}
k:LOCATE(LA,x);{在LA中进行搜索}
IF k=0 THEN [INSERT(LA,n+1,x);{在LA表尾插入}
n:n+1{表长加1}]
]
ENDP;{union}
线性表的存储结构
--->顺序存储结构
线性表的顺序存储结构是指:用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻
优点:
可以随机存取表中的元素,按序号查找元素的速度很快。
缺点:
插入和删除操作需要移动元素,插入之前要移动元素以挪出空的存储单元,然后再插入元素;删除时同样需要移动元素,以填充被删除的元素空出来的存储单元。
---->链式存储结构
线性表的链式存储是用结点来存储数据元素,元素的结点地址可以连续,也可以不连续,因此,存储数据元素的同时必须存储存储元素之间的逻辑关系。数据域用于存储数据元素的值,指针域则存储当前元素的直接前驱或直接后继的位置信息。
----->单链表
n个结点通过指针连成一个链表,若节点中只有一个指针域,则称为线性链表(单链表)
- 线性表基础知识(一)
- 线性表基础知识(二)
- 线性表基础知识(三)
- 线性表基础知识(四)
- 线性表的基础知识
- 线性表基础知识总结
- 线性表基础知识总结
- 数据结构基础知识-线性表
- 线性表(1)--基础知识
- 深度学习笔记(一)线性分类器(基础知识)
- 线性表应用一
- 线性表练习一
- 线性表 (一)
- 关于线性表(一)
- 线性表(一)
- 线性表(一)
- 线性表(一)
- (一)线性表
- Windows Storage Server 2008 R2 下载安装
- Linux下分区详解之--Fdisk
- android UI进阶之弹窗的使用(2)--实现通讯录的弹窗效果
- G-Sockets(IOCP) 2.5 Demo 源码 (VC2008 & Delphi7/2010)下载
- php的set_include_path与get_include_path()的用法
- 线性表基础知识(一)
- 改变WP7程序启动的页面Page.xaml
- Myeclipse 6.0.1下载,支持eclipse3.3.1
- eclipse 中的Web project与 Myeclipse 中的 web project有何区别?
- hibernate 三 多对一
- android UI进阶之用ViewPager实现欢迎引导页面
- 让默认安装的Linux支持中文
- DIRECTORY_SEPARATOR和PATH_SEPARATOR的用法
- Apple 等六大生态系统的崛起