第14课 - 线性表的本质和操作(List)

版权声明:课程笔记内容整理于狄泰软件 https://blog.csdn.net/qq_39654127/article/details/79947959

1、线性表的本质和操作 

线性表( List )的表现形式 

               -零个多个数据元素组成的集合

               -数据元素在位置上是有序排列的 

               -数据元素的个数是有限的 

               -数据元素的类型必须相同 

 

线性表( List )的抽象定义 

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

                                 ( a₀,a₁,...,an-1 ) 

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

 

线性表(List)的性质 

               -a₀为线性表的第一个元素,只有一个后继 

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

               -除a₀an-1外的其它元素 ai 既有前驱,又有后继 

               -直接支持逐项访问和顺序存取 

 

线性表的—些常用操作 

               -将元素插入线性表

               -将元素从线性表中删除 

               -获取目标位置处元素的值 

               -设置目标位置处元素的值 

               -获取线性表的长度 

               -清空线性表 

    

2、编程实验 

线性表抽象类的创建     List.h

List.h

#ifndef LIST_H  
#define LIST_H  
  
#include "Object.h"  
  
namespace DTLib  
{  
  
template <typename T>  
class List : public Object  
{  
    List(const List& e);
    List& operator= (const List& e);
    //对于容器类型的类,可以考虑禁用拷贝构造和赋值操作。
    //如:存放的数据为堆空间地址时,赋值操作后,最后可能两次delete同一片空间
    //如:s1指向堆空间一片空间,被拷贝构造后s2也指向这片空间
public:  
    List() {};
    virtual bool insert(const T& e) = 0;
    virtual bool insert(int i,const T& e) = 0;  
    virtual bool remove(int i) = 0;  
    virtual bool set(int i,const T& e) = 0;  
    virtual bool get(int i,T& e) const = 0; 
    virtual int find(const T& e) const = 0; 
    virtual int length() const = 0;  
    virtual void clear() = 0;  
};  
}  
  
#endif // LIST_H  

main.cpp

#include <iostream>  
#include "list.h"  
  
using namespace std;  
using namespace DTLib;  
  

int main()  
{  
    List<int>* l = NULL;  
  
    return 0;  
}

  

3、小结

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

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

            线性表可用于描述排队关系的问题 

            线性表在程序中表现为—种特殊的数据类型 

            线性表在C++中表现为—个抽象类 

            线性表作为容器类,应该避免拷贝构造和拷贝赋值 

阅读更多

没有更多推荐了,返回首页