数据结构--线性表的基本运算及多项式的算术运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构:线性表的基本运算及多项式的算术运算

一、实验目的和要求

实现顺序表和单链表的基本运算,多项式的加法和乘法算术运算。

要求:

能够正确演示线性表的查找、插入、删除运算。实现多项式的加法和乘法运算操作。

二、实验环境(实验设备)

X64架构计算机一台,Windows 7操作系统,

IDE: Dev C++ 5.11

编译器: gcc 4.9.2 64bit

二、实验原理及内容

程序一:实现顺序表和单链表的实现

本程序包含了四个文件,分别是LinearListMain.cpp,linearlist.h,seqlist.h,singlelist.h。分别是主程序,线性表抽象类,顺序储存线性表的实现,链表储存顺序表的实现。

文件之间的关系图:

本程序一共包含了三个类:分别是LinearList(线性表抽象类),SeqList(顺序储存的线性表),SingleList(链表储存的线性表)。类与类之间的关系图如下:

其实,抽象类LinearList规定了公共接口。分别派生了SeqList类和SingleList。

SingleList类与SingleList类分别实现了LinearList类中的所有接口。

程序代码以及分析:

Linearlist类:

#include

using namespace std;

template

class LinearList

{

protected:

int n; //线性表的长度

public:

virtual bool IsEmpty() const=0; //判读是否是空线性表

virtual int Length() const=0; //返回长度

virtual bool Find(int i,T& x) const=0; //将下标为i的元素储存在x中,成功返回true,否则返回false

virtual int Search(T x) const=0; //寻找值是x的元素,找到返回true,否则返回false

virtual bool Insert(int i,T x)=0; //在下标为i的元素后面插入x

virtual bool Delete(int i)=0; //删除下标为i的元素

virtual bool Update(int i,T x)=0;//将下标为i的元素更新为x virtual void Output(ostream& out)const=0; //将线性表送至输出流

};

包含了一个保护数据成员n,和8种运算,具体说明见注释。

算法分析:

Search函数功能是查找值是x的元素,返回下标,不存在返回-1;本程序采用从第一个元素依次遍历的方法,时间复杂度为O(n)。

算法分析:

首先判断链表是否是空链表,再判断下标是否越界。符合条件后,从i+1的

算法分析:

首先判断下标是不是越界,然后定义临时变量j用来计数,标记当前遍历位置的下标,到达下标i是停止,并赋值给x。时间复杂度是O

代码:

算法分析:

首先定义指针p和标记位置下标的j。然后从first依次遍历,每次遍历j加1,以此来标记当前位置的下标,一旦遍历到了x,则返回下标。如果到尾节

算法分析:

首先判断是否是空链表,在判断下边是否越界。然后分两种情况进行删除,第一种情况是删除第一个元素,需要修改first指针,第二种情况是删除下

程序包含两个类,项结点类和多项式类,二者为组合关系。其中,多项

算法分析:

整体思路:首先定义一个临时多项式对象tmp,用来存相乘之后的结果。

实验报告

相关文档
最新文档