武汉理工大学数据结构实验源代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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();

相关文档
最新文档