数据结构笔记

您所在的位置:网站首页 线性表的顺序表示有什么优缺点 数据结构笔记

数据结构笔记

2024-07-04 06:15| 来源: 网络整理| 查看: 265

2.1线性表 本章概览线性表的概念线性表的特性线性表的功能概述纯虚函数在构造线性表中的意义类模板在构造线性表中的意义运算符重载在构造线性表中的意义 线性表的存储表示

本章概览 线性表的逻辑结构线性表的顺序存储及实现线性表的链接存储及实现顺序表和链表的应用线性表的其他存储方法 线性表的概念

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

线性表的特性

线性表的逻辑结构

有限性:线性表中数据元素的个数是有穷的。相同性:本章线性表中数据元素的类型是同一的。顺序性:线性表中相邻的数据元素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 ∈D, i=2,...,n } 基本操作: enum bool{false,true}; //枚举类型 template 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 operator=(LinearList& L)=0; //运算符重载 }; 纯虚函数在构造线性表中的意义

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

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

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

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

实例化的形式为

类模板名对象名[(构造函数实参列表)] AINTA(6,8); ADOUBLEA(6.6,6.8); 运算符重载在构造线性表中的意义

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

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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3