一、线性表的定义

由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

线性表的定义与特点及抽象数据类型定义相关推荐

  1. 线性表adt的c语言表达,抽象数据类型定义(ADT)

    类C语言语法示例 1.预定义常量和类型 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE - ...

  2. 线性表抽象数据类型定义与顺序表操作

    作业3-线性表抽象数据类型定义与顺序表操作 1-1 对于顺序存储的长度为N的线性表, 访问结点和增加结点的时间复杂度 分别对应为O(1)和O(N).(T) [解析]增加结点,不同位置复杂度不同,但平均 ...

  3. 线性表的顺序存储——顺序存储结构的抽象实现

    1,本文完成顺序存储结构线性表的抽象实现: 1,SeqList 还是一个抽象类,这里仅实现线性表的关键操作,但是还是不能生成具体对象: 2,关键操作虽然指定,但是顺序存储的指定没有在 SeqList ...

  4. (王道408考研数据结构)第二章线性表-第三节1:单链表的定义及其操作(插入和删除,建立之尾插和头插)

    文章目录 一:单链表相关 (1)单链表的定义 (2)头指针与头结点 二:单链表代码描述 三:单链表的初始化 四:单链表的插入 五:单链表的删除 六:单链表查找 (1)按位查找 (2)按值查找 七:单链 ...

  5. 栈的抽象数据类型定义

    栈Stack: 数据对象:栈和线性表一样,包含n个数据元素,这n个数据元素是同样性质的,元素的个数可以等于0,此时栈为空栈. 数据关系:还是前驱和后继的关系,ai-1是ai的前驱,ai是ai-1的后继 ...

  6. 宏定义时对整数进行数据类型定义

    最近看代码时,发现宏定义时就对整数进行了数据类型定义,其实也是对宏定义的数据类型进行了定义. (1)定义为int型 #include <stdio.h> #include <stdl ...

  7. (王道408考研数据结构)第二章线性表-第三节2:双链表的定义及其操作(插入和删除)

    文章目录 一:双链表的定义 二:双链表代码描述 三:双链表的初始化 四:双链表的插入 五:双链表的删除 一:双链表的定义 双链表:双链表在单链表的基础上再增加一个指针域,用于指向它的前驱结点 二:双链 ...

  8. c语言复数除法结构体,试用C语言的结构类型定义表示复数的抽象数据类型。

    满意答案 horoggg 2014.09.03 采纳率:58%    等级:9 已帮助:462人 struct num { float a;/*实部*/ float b;/*虚部*/ }; struc ...

  9. C语言数据结构-第二章线性表-电大

    第二章线性表--内容简介 本章将进入线性结构的学习. 线性结构是最简单.最常用的一种数据结构. 本章将学习线性表的定义.顺序和链式两种存储方式及相应存储结构上的运算实现.通过典型示例训练,掌握线性表的 ...

最新文章

  1. Android提示框与通知的使用
  2. eclipse快捷键操作
  3. 【音频处理】从时域和频域上分别改变音频的响度
  4. GitHub最最最火的开源爬虫工具箱,一爬就取
  5. 阿里云debian mysql_记录下在阿里云linux上安装与配置Mysql
  6. Java面试知识点总结宝典助你通关!成功入职字节跳动
  7. c语言中有死循环时上机编译,2011级C语言复习题(精简)
  8. oracle 字符格式化,Oracle 字段格式化[日期,金额]
  9. 8-12 三个定时任务
  10. 通过SessionID和用户名来保证同一个用户不能同时登录
  11. NOIP2007 T1奖学金 解题报告-S.B.S.
  12. linux安装VLC播放器
  13. 贝叶斯判别python_Python贝叶斯分析 PDF 完整原版
  14. Samba服务------SMB协议
  15. 解决 谷歌chrome浏览器开启麦克风
  16. L13过拟合欠拟合及其解决方案
  17. cadence使用教程
  18. ipad打开网页无法播放视频
  19. oracle中的递归查询
  20. PS里面的快速选区工具

热门文章

  1. 【问题解决】微软OneNote使用笔记,onenote无法连接网络无法同步解决方法
  2. android第三方微信/支付宝闪屏不能登录、支付、等问题解决
  3. 拿下数据分析Offer之统计学
  4. 如何创建一个没有密码的加密文件夹
  5. 智慧应急指挥平台解决方案 PPT
  6. 【FPGA】Verilog:时序电路设计 | 二进制计数器 | 计数器 | 分频器 | 时序约束
  7. 试题 历届试题 错误票据
  8. CF538B Quasi Binary
  9. 曾经有一张很好的图放在我的面前....
  10. 微软 AI 商学院打卡苏州,共探医疗行业转型新征程!