第5课 - 线性表的本质和操作
1. 线性表的抽象定义
线性表是具有相同类型的n(n>=0)个数据元素的有限序列。
(a0, a1, ... , an-1)
ai是表项(数据元素),n是表长度 。
2. 线性表的性质
- a0是线性表的第一个元素,只有一个后继
- an-1是线性表的最后一个元素,只有一个前驱
- 除a0和an-1外的其他元素ai,既有前驱,又有后继
- 直接支持逐项访问和顺序存取
3. 线性表的常用操作
- 将元素插入线性表
- 将元素从线性表中删除
- 设置目标位置处元素的值
- 查找数据元素在线性表中的位置
- 获取目标位置处元素的值
- 获取线性表的长度
- 清空线性表
4. 线性表的程序表现
线性表在DTLib中表现为一个抽象类List,在后续的博客中,将会通过继承List来实现线性表的顺序存储结构和链式存储结构。
1 #ifndef LIST_H 2 #define LIST_H 3 4 #include "Object.h" 5 6 namespace DTLib 7 { 8 9 template <typename T> 10 class List : public Object 11 { 12 protected: 13 List(const List &); 14 List &operator = (const List &); 15 public: 16 List() { } 17 virtual bool insert(int i, const T &e) = 0; //在位置i处插入新元素e 18 virtual bool insertTail(const T &e) = 0; //在尾部插入新元素e 19 virtual bool remove(int i) = 0; //删除位置i处的元素 20 virtual bool set(int i, const T &e) = 0; //设置位置i处的元素为e 21 virtual int find(const T &e) const = 0; //查找e在线性表中第一次出现的位置;若e不存在,则返回-1 22 virtual bool get(int i, T &e) const = 0; //获取位置i处的元素,通过参数e返回 23 virtual T get(int i) const = 0; //获取位置i处的元素,通过返回值返回 24 virtual int length() const = 0; //获取线性表长度 25 virtual void clear() = 0; //清空线性表 26 }; 27 28 } 29 30 #endif // LIST_H
注:本文整理于狄泰《数据结构开发实战教程》课程内容