数据结构与算法分析(c++版) #2 初涉线性表
来源:互联网 发布:淘宝被盗图怎么投诉 编辑:程序博客网 时间:2024/06/18 05:02
线性表
线性表的定义:是由称为元素的数据项组成的一种有限且有序的序列。这个定义中有序是指线性表中的每一个元素都有自己的位置。
线性表不含任何元素时,我们称之为空表(empty list)。当前储存的元素数目成为线性表的长度(length)。线性表的开始结点成为表头(head),结尾结点成为表尾(tail)。表中的元素的值与它的位置之间可以有联系,也可以没有联系,因为线性表可以分为有序线性表和无序线性表。有序线性表元素按照值得递增顺序排列,而无序线性表在元素的值与位置之间就没有特殊的联系。
书中为了定义当前位置的概念,假设线性表由两个分离部分组成,这两部分被一个“栅栏”分开,这个栅栏与当前位置相对应。(本人把它理解为是迭代器指向的地方)。例如,<20, 23 | 12, 15>这个线性表的四个元素被栅栏分成两部分,左边有两个,右边也有两个。
下面是线性表的ADT。
template <class Elem> class List{public:// 清空线性表 virtual void clear() = 0 ;// 在线性表的右边部分的表头插入元素,如果线性表满了就返回false,否则返回true virtual bool insert(const Elem &) = 0;// 在线性表的右边部分的表尾拼接元素,如果线性表满了就返回false,否则返回true virtual bool append(const Elem &) = 0;// 删除线性表的右边部分的表头元素,如果右表为空返回false,否则返回true,并把表头元素的值返回到参数中virtual bool remove(Elem &) = 0;// 把栅栏的位置放在线性表表头,使左边部分为空 virtual void setStart() = 0;// 把栅栏的位置放在线性表尾,使右边部分为空virtual void setEnd() = 0;// 把栅栏的位置向左移动一个单位,如果栅栏已经是表头就不移动virtual void prev() = 0; // 把栅栏的位置向右移动一个单位,如果栅栏已经是表尾就不移动virtual void next() = 0;// 返回左边部分线性表的长度virtual int leftLength() const = 0;// 返回右边部分线性表的长度virtual int rightLength() const = 0;// 设置栅栏的位置,如果设置的值小于等于线性表元素的个数,则返回true,否则超范围返回false virtual bool setPos(int pos) = 0;// 获取右边线性表第一个元素的值,并返回到参数中,获取成功返回true,否则返回falsevirtual bool getValue(Elem &) const = 0;// 打印线性表,可有可无 virtual void print() const = 0; };
线性表的实现由两种标准方法——顺序表和链表。接下来就学习一些顺序表和链表的实现,并对比两者的时间和空间效率。
0 0
- 数据结构与算法分析(c++版) #2 初涉线性表
- 【数据结构与算法分析】线性表
- 数据结构与算法分析之线性表
- 数据结构与算法(C#)--线性表
- 数据结构与算法分析笔记(2)--线性表
- 数据结构与算法分析之03线性表
- 数据结构与算法 线性表
- 数据结构与算法--线性表
- 数据结构与算法---线性表
- 数据结构与算法--线性表
- Java版常见数据结构与算法1 -- 数据结构 --线性表
- 数据结构与算法分析c++:算法分析
- 数据结构与算法分析c++:算法分析
- 数据结构与算法3:线性结构与线性表-链表
- 算法与数据结构(1)--线性表
- 数据结构与算法(5)--线性表
- 数据结构与算法(二)线性表
- 数据结构与算法之----线性表
- Java学习笔记(四)循环控制
- 二级指针和二维数组的比较
- bitmap file res\xxx.png is not in 3.00 format 的处理方法
- TortoiseGit上传项目到github
- Ruby on Rails服务器文件上传
- 数据结构与算法分析(c++版) #2 初涉线性表
- linux下共享内存mmap和DMA(直接访问内存)的使用 2014-08-13 09:31:40 blog.chinaunix.net/uid-7374279-id-4413316.html
- Altera硬IP开发PCIe 之二 Arria V Hard IP for PCI Express用户指南
- CocoaPods是什么?
- 黑马程序员android 事件分发机制
- Mysql的全文索引为什么不支持中文
- android中的日志工具Log
- C#中缓存的基本用法总结
- PHP mysqli(数据库操作)