线性表的定义与特点及抽象数据类型定义
一、线性表的定义
由n(n>=0)个数据特性相同的元素构成的有限序列称为线性表。
线性表中元素的个数n(n>=0)定义为线性表的长度,n=0时线性表称为空表。
二、非空线性表及线性结构的特点
1、存在唯一的一个被称为“第一个”的数据元素;
2、存在唯一的一个被称为“最后一个”的数据元素;
3、除第一个结点外,剩余的每个数据元素都只有一个前驱;
4、除最后一个结点外,剩余的每个数据元素都只有一个后继;
三、线性表的抽象数据类型定义
ADT List{
数据对象: D={ai I aiEElemSet, i=l, 2, …, n, n;;,Q}
数据关系:R=(<a 七 1,ai>I a 仁 1,aiED, i=2, …, n}
基本操作:
Ini tList (&L)
操作结果:构造一个空的线性表L。
DestroyList(&L)
初始条件:线性表L已存在。
操作结果:销毁线性表L。
ClearList (&L)
初始条件:线性表L已存在。
操作结果:将L重置为空表。
ListEmpty(L)
初始条件:线性表L已存在。
操作结果:若L为空表,则返回true, 否则返回false。
ListLength(L)
初始条件:线性表L已存在。
操作结果:返回L中数据元素个数。
GetElem(L,i,&e)
初始条件:线性表L巳存在,且1:,s;i:os;ListLength(L)。
操作结果:用e返回L中第1个数据元素的值。
LocateElem(L,e)
初始条件:线性表L已存在。
操作结果:返回L中第1个 值与e相同的元素在 L中的位置 。若这样的数据元素不存在 ,则返回值为0。
PriorElem(r,cur_e,&pre_e)
初始条件:线性表L已存在。
操作结果:若cur_e是L的数据元素,且不是第一个,则用pre_e返回其前驱,否则操作失败,pre_e无定义。
NextElem(L,cur_e,&next_e)
初始条件:线性表L已存在。
操作结果:若cur_e是L的数据元素,且不是最后一个,则用next_e返回其后继,否则操作失败,next_e无定义。
Listinsert(&L,i,e)
初始条件:线性表L已存在,且1:,s;i:os;ListLength (L) +l。
操作结果:在 L中第1个位置之前插入新的数据元素 e, L的长度加1。
ListDelete(&L,i)
初始条件:线性表L已存在且非空,且l:os;i:os;ListLength(L)。
操作结果:删除L的第1个数据元素,L的长度减1。
TraverseList(L)
初始条件:线性表L已存在。
操作结果:对线性表L进行遍历,在遍历过程中对 L的每个结点访问一次。
} ADT List
线性表的定义与特点及抽象数据类型定义相关推荐
- 线性表adt的c语言表达,抽象数据类型定义(ADT)
类C语言语法示例 1.预定义常量和类型 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE - ...
- 线性表抽象数据类型定义与顺序表操作
作业3-线性表抽象数据类型定义与顺序表操作 1-1 对于顺序存储的长度为N的线性表, 访问结点和增加结点的时间复杂度 分别对应为O(1)和O(N).(T) [解析]增加结点,不同位置复杂度不同,但平均 ...
- 线性表的顺序存储——顺序存储结构的抽象实现
1,本文完成顺序存储结构线性表的抽象实现: 1,SeqList 还是一个抽象类,这里仅实现线性表的关键操作,但是还是不能生成具体对象: 2,关键操作虽然指定,但是顺序存储的指定没有在 SeqList ...
- (王道408考研数据结构)第二章线性表-第三节1:单链表的定义及其操作(插入和删除,建立之尾插和头插)
文章目录 一:单链表相关 (1)单链表的定义 (2)头指针与头结点 二:单链表代码描述 三:单链表的初始化 四:单链表的插入 五:单链表的删除 六:单链表查找 (1)按位查找 (2)按值查找 七:单链 ...
- 栈的抽象数据类型定义
栈Stack: 数据对象:栈和线性表一样,包含n个数据元素,这n个数据元素是同样性质的,元素的个数可以等于0,此时栈为空栈. 数据关系:还是前驱和后继的关系,ai-1是ai的前驱,ai是ai-1的后继 ...
- 宏定义时对整数进行数据类型定义
最近看代码时,发现宏定义时就对整数进行了数据类型定义,其实也是对宏定义的数据类型进行了定义. (1)定义为int型 #include <stdio.h> #include <stdl ...
- (王道408考研数据结构)第二章线性表-第三节2:双链表的定义及其操作(插入和删除)
文章目录 一:双链表的定义 二:双链表代码描述 三:双链表的初始化 四:双链表的插入 五:双链表的删除 一:双链表的定义 双链表:双链表在单链表的基础上再增加一个指针域,用于指向它的前驱结点 二:双链 ...
- c语言复数除法结构体,试用C语言的结构类型定义表示复数的抽象数据类型。
满意答案 horoggg 2014.09.03 采纳率:58% 等级:9 已帮助:462人 struct num { float a;/*实部*/ float b;/*虚部*/ }; struc ...
- C语言数据结构-第二章线性表-电大
第二章线性表--内容简介 本章将进入线性结构的学习. 线性结构是最简单.最常用的一种数据结构. 本章将学习线性表的定义.顺序和链式两种存储方式及相应存储结构上的运算实现.通过典型示例训练,掌握线性表的 ...
最新文章
- Android提示框与通知的使用
- eclipse快捷键操作
- 【音频处理】从时域和频域上分别改变音频的响度
- GitHub最最最火的开源爬虫工具箱,一爬就取
- 阿里云debian mysql_记录下在阿里云linux上安装与配置Mysql
- Java面试知识点总结宝典助你通关!成功入职字节跳动
- c语言中有死循环时上机编译,2011级C语言复习题(精简)
- oracle 字符格式化,Oracle 字段格式化[日期,金额]
- 8-12 三个定时任务
- 通过SessionID和用户名来保证同一个用户不能同时登录
- NOIP2007 T1奖学金 解题报告-S.B.S.
- linux安装VLC播放器
- 贝叶斯判别python_Python贝叶斯分析 PDF 完整原版
- Samba服务------SMB协议
- 解决 谷歌chrome浏览器开启麦克风
- L13过拟合欠拟合及其解决方案
- cadence使用教程
- ipad打开网页无法播放视频
- oracle中的递归查询
- PS里面的快速选区工具
热门文章
- 【问题解决】微软OneNote使用笔记,onenote无法连接网络无法同步解决方法
- android第三方微信/支付宝闪屏不能登录、支付、等问题解决
- 拿下数据分析Offer之统计学
- 如何创建一个没有密码的加密文件夹
- 智慧应急指挥平台解决方案 PPT
- 【FPGA】Verilog:时序电路设计 | 二进制计数器 | 计数器 | 分频器 | 时序约束
- 试题 历届试题 错误票据
- CF538B Quasi Binary
- 曾经有一张很好的图放在我的面前....
- 微软 AI 商学院打卡苏州,共探医疗行业转型新征程!