第5课 - 线性表的本质和操作

1. 线性表的抽象定义

线性表是具有相同类型的n(n>=0)个数据元素有限序列

             (a0, a1, ... , an-1)

ai是表项(数据元素),n是表长度

2. 线性表的性质

  1. a0是线性表的第一个元素,只有一个后继
  2. an-1是线性表的最后一个元素,只有一个前驱
  3. 除a0和an-1外的其他元素ai,既有前驱,又有后继
  4. 直接支持逐项访问和顺序存取

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

 

注:本文整理于狄泰《数据结构开发实战教程》课程内容

posted @ 2018-06-18 18:01  原野追逐  阅读(211)  评论(0编辑  收藏  举报