实验项目内容
p 1. 编写使用freelist 的带头、尾结点的双向链表类的定义,实现双向链表的基本操作。
p 2. 利用双向链表实现2个一元多项式的加法和乘法运算,运算结果得到的链表要求按照指数降序排列的多项式。
输入格式:
3 2 //第一行,两个正整数分别表示多项式的项数
5 4 //输入第一个多项式各项的系数和指数,按指数降序输入
-3 2
1 0 //第一个多项式;
6 2 //输入第二个多项式各项的系数和指数,按指数降序输入
-3 1 //第二个多项式;
输出格式:
4 //相加得到的多项式的项数
5 4 //每一项的系数与指数,按指数降序排列输出
3 2
-3 1
1 0
6 //相乘得到的多项式的项数
30 6
-15 5
-13 4
9 3
6 2
-3 1
分析:
1.首先定义一个节点类Link,用来存储一项的值,利用可利用空间表freelist动态管理空间,重载new,delete 来实现freelist
2.定义一个双链表类,用来存储一个多项式。包含init()初始化结点位置,以及双链表的一些基本操作。
3.将加法,乘法函数设置为类的成员函数,实现封装
4.通过主函数实现并调用类中的成员函数实现所需功能
实验代码:
#include <iostream>
using namespace std;
class Link { //声明结点Link类,用于存放多项式的一项;
private:
static Link * freelist; //创建静态全局变量freelist用于指向可利用空间表的头结点;
public:
int el1; //用于存放多项式的系数;
int el2; //用于存放多项式的指数;
Link * prev; //指向双链表的前一个结点;
Link * next; //指向双链表的后一个结点;