当前位置:文档之家› 数据结构--线性表的基本运算及多项式的算术运算

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

数据结构:线性表的基本运算及多项式的算术运算
一、实验目的和要求
实现顺序表和单链表的基本运算,多项式的加法和乘法算术运算。

要求:
能够正确演示线性表的查找、插入、删除运算。

实现多项式的加法和乘法运算操作。

二、实验环境(实验设备)
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 <iostream>
using namespace std;
template <class T>
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,用来存相乘之后的结果。

实验报告。

相关主题