数据结构笔记—2.1线性表的逻辑结构

本章概览

  1. 线性表的逻辑结构
  2. 线性表的顺序存储及实现
  3. 线性表的链接存储及实现
  4. 顺序表和链表的应用
  5. 线性表的其他存储方法

线性表的概念

线性表(linear line)是最简单的数据结构。非空表记为:L=(a1, a2 , …, ai-1, ai , …, an)。
其是一个有限序列,表中每个表项都是相继排列的,每两个相邻表象都有直接前驱和直接后继关系,也就是说,线性表中仅存在唯一的一个表头(haed)、唯一的一个表尾(tail)。

线性表的特性

线性表的逻辑结构

  1. 有限性:线性表中数据元素的个数是有穷的。
  2. 相同性:本章线性表中数据元素的类型是同一的。
  3. 顺序性:线性表中相邻的数据元素ai-1和ai之间存在序偶关系(ai-1, ai),即ai-1是ai的前驱, ai是ai-1的后继;a1无前驱,an无后继,其它每个元素有且仅有一个前驱和一个后继。

线性表的功能概述

ADT LinearList {
    数据对象:
    D={  ai | ai∈ T, i=1,2,...,n, n≥0 }
    数据关系:
    R1={ <ai-1, ai >| ai-1, ai ∈D, i=2,...,n }
    基本操作:
    enum bool{false,true};	//枚举类型
    template <class T>
    class LinearList{
     //线性表的具体定义与实现采用继承与派生方式。此为基类定义,体线性表的实现要根据其派生类的具体定义而实现
    public:
        LinearList();   //初始化
        ~LinearList(); // 销毁
        virtual int Size()const=0;		//注意均为纯虚类定义
        virtual int Length() const=0;
        virtual int Search(T& x)const=0;
        virtual Locate(int i)const=0;
        virtual bool IsEmpty()const=0;
        virtual bool IsFull()const=0;
        virtual bool getData(int i,T& x)=0;
        virtual bool Insert(int i,T& x)=0;
        virtual bool Remove(int i, T& x)=0;
        virtual void Sort()=0;
        virtual void input()=0;
        virtual void output()=0;
        virtual LinearList<T> operator=(LinearList<T>& L)=0; //运算符重载
    };				

纯虚函数在构造线性表中的意义

我们用派生和继承的方式来实现线性表的具体定义和操作,以实现多态性
所谓多态性指不同对象接收到不同消息时,根据对象类的不同而产生不同的动作,即对应同一个函数名的函数执行不同的函数体。其提高了代码的重用性和运行效率,更重要的是提高了软件的可扩充性。
纯虚函数其实就是声明一个虚函数,再在基类中定义它,基类中的纯虚函数只有函数名而不具备函数的功能,不能被调用。而在派生类中只有对此函数提供定义后,才能具备函数的功能,才能被调用。它仅仅是在基类汇总为其派生类保留一个函数的名字,以方便派生类根据需要对它定义。

类模板在构造线性表中的意义

亦为了是实现程序的多态性。
其定义为

template <class T>//T为虚拟类型名,表示某一类的“类”的名称
    class A{	//类模板的名为A
    (成员函数)
    }

实例化的形式为

类模板名<具体类型>对象名[(构造函数实参列表)]
A<int>INTA(6,8);
A<double>DOUBLEA(6.6,6.8);

运算符重载在构造线性表中的意义

亦为了是实现程序的多态性。

函数类型 operation 运算符名称(形参列表)//根据形参表的不同以实现重载操作
{
	运算符重载处理
}

线性表的存储表示

线性表是一种逻辑结构
线性表的存储表示有两种,顺序存储和链表存储。基于数组的存储表示叫做顺序表;基于指针的存储表示叫做链表(单链表、双链表、循环链表等)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值