武汉理工大学数据结构实验源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一次实验(题目一)源代码:
#include "stdafx.h"
#include
using namespace std;
class Term { public:
double coef; int
exp;
Term *link;
Term(double c, int e, Term *next = NULL)
{ coef = c; exp = e; link = next;
}
Term *insertAfter(double c, int e);
};
class Polynomial
{ private: Term
*first; Term
*last; public:
Polynomial() { first = new Term(0, -1); } int
maxOrder();
Term *getHead() const { return first; } Term *getTail() const { return last; } void output(); void input(); static Polynomial add(Polynomial *p1, Polynomial *p2); static Polynomial multiply(Polynomial *p1, Polynomial *p2);
};
Term * Term::insertAfter(double c, int e)
{ // link = new Term(c, e, link);
this->link = new Term(c, e); return link;
}
void Polynomial::input()
{ int n;
double c; int
e;
cout << "请输入表达式的项数:";
cin >> n; last = first;
for (int i = 0 ; i < n; i++) {
cout << "请输入系数和指数:";
cin >> c >> e; last = last ->
insertAfter(c, e);
}
}
void Polynomial::output() { Term *p = getHead() -> link;
while (p) { if (p -> link != NULL) { cout << p ->
coef << "x^" << p -> exp << " + ";
} else { cout << p -> coef << "x^" << p -> exp <<
" ";
} p = p
-> link;
}
}
static Polynomial add(Polynomial *p1, Polynomial *p2) {
Term *pa, *pb, *pc, *p; Polynomial C; double temp;
pa = p1 -> getHead() -> link; pb = p2 -> getHead() -> link;
pc = C.getHead(); while (pa && pb) { if (pa -> exp
== pb -> exp) { temp = pa -> coef + pb -> coef;
if (temp) { pc = pc -> insertAfter(temp, pa -> exp);
} pa = pa -> link; pb = pb -> link; }
else if (pa -> exp < pb -> exp) { pc = pc ->
insertAfter(pa -> coef, pa -> exp); pa = pa -> link;
} else { pc = pc -> insertAfter(pb -> coef, pb ->
exp); pb = pb -> link;
} } if (pa) p = pa; else p = pb; while
(p) { pc = pc -> insertAfter(p -> coef, p -> exp);
p = p -> link;
} return
C;
}
static Polynomial multiply(Polynomial *p1, Polynomial *p2) {
Term *pa = p1 -> getHead() -> link;
Term *pb = p2 -> getHead() -> link;
Term *ptmp;
Polynomial C; while (pa) { Polynomial temp; ptmp =
temp.getHead(); pb = p2 -> getHead() -> link; while (pb) { ptmp -> insertAfter(pa -> coef * pb -> coef, pa -> exp + pb -> exp); ptmp = ptmp -> link; pb = pb -> link;
} pa = pa ->
link;
C = add(&C, &temp);
// C.output();