数据结构--线性表的基本运算及多项式的算术运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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,用来存相乘之后的结果。
实验报告