• 线性表的顺序存储——线性表的本质和操作


    1,线性表(List)的表现形式:

           1,零个或多个数据元素组成的集合;

           2,数据元素在位置上是有序排列的;

           3,数据元素的个数是有限的;

           4,数据元素的类型必须相同;

          

    2,线性表抽象定义:

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

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

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

             

    3,线性表的性质:

           1,a0 为线性表的第一个元素,只有一个后继;

           2,an-1 为线性表的最后一个元素,只有一个前驱;

           3,除 a0 和 an-1 外的其它元素 ai,既有前驱,又有后继;

           4,直接支持逐项访问和顺序存取;

          

    4,线性表的一些常用操作(插删获设长清):   

           1,将元素插入线性表;

           2,将元素从线性表中删除;

           3,获取目标位置处元素的值;

           4,设置目标元素处元素的值;

           5,获取线性表的长度;

           6,清空线性表;

          

    5,线性表在程序中表现为一种特殊的数据结构,其抽象类创建如下:

     1 #ifndef LIST_H
     2 #define LIST_H
     3 
     4 #include "Object.h"
     5 
     6 namespace DTLib
     7 {
     8 
     9 template <typename T>   // 用模板的方式描述 List,所以不需用 *.cpp 文//件;
    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(const T& e) = 0;     // 在线性表的尾部默认的插入一个元素,所以 i 省略了;
    18     virtual bool insert(int i, const T& e) = 0;
    19     virtual bool remove(int i) = 0;
    20     virtual bool set(int i, const T& e) = 0;
    21     virtual bool get(int i, T& e) const = 0;
    22     virtual int find(const T& e) const = 0;
    23     virtual int length() const = 0;
    24     virtual void clear() = 0;
    25 };
    26 }
    27 #endif // LIST_H

    6,以下是创建抽象类的测试代码:

     1 #include <iostream>
     2 #include "List.h"
     3 
     4 using namespace std;
     5 using namespace DTLib;
     6 
     7 int main()
     8 {
     9     List<int>* l = NULL;
    10 }

    7,小结:

           1,线性表是数据元素的有序并且有限集合;

           2,线性表中的数据元素必须是类型相同的;

           3,线性表可用于描述派对关系的问题;

           4,线性表在程序中表现为一种特殊的数据类型;

           5,线性表在 C++ 中表现为一个抽象类;

  • 相关阅读:
    除法
    01.python对象
    00.基础入门
    00.斐波那契数列第n项
    16.分治排序
    15.快速排序
    14.插入排序--希尔排序(缩小增量排序)
    13.插入排序--直接插入排序(简单插入排序)
    12.选择排序
    11.冒泡排序
  • 原文地址:https://www.cnblogs.com/dishengAndziyu/p/10921408.html
Copyright © 2020-2023  润新知