多项式的储存与运算c++
#include using namespace std; template struct Node { float coef;//系数 int exp;//指数 Node }; template class Linklist { Node public: Linklist(); //不含参数构造 Linklist(T a[],T b[],int i);//含参 ~Linklist(); // 析构函数 void output();//输出 void sort();//排序 void add(Linklist void sub(Linklist }; template void Linklist { Node Node while (p&&q) { if (p->exp < q->exp) { q = q->next; p = p->next; } else if (p->exp == q->exp) { p->coef = p->coef + q->coef; p->next = q->next; delete q; q = p->next; } else { T a = p->coef; T b = p->exp; p->coef = q->coef; p->exp = q->exp; q->coef = a; q->exp = b; p = q; q = q->next; } } } template void Linklist { Node Node while (pa&&pb) { if (pa->exp < pb->exp)//如果指数小于指数b { pre_pa = pa; pa = pa->next; } else if (pa->exp == pb->exp)//等于 { pa->coef = pa->coef + pb->coef; if (pa->coef == 0)//系数相加为0 { pre_pa->next = pa->next; delete pa; pa = pre_pa->next; } else//不为0 { pre_pa = pa; pa = pa->next; } pre_pb->next = pb->next;//删除pb结点 delete pb; pb = pre_pb->next; } else//pb插入pa前 { Node pre_pa->next = pb; pb->next = pa; pre_pa = pb; pb = r; pre_pb->next = pb; } } if (pb) { pa->next = pb; delete b.head; } } template void Linklist { Node Node while (pa&&pb) { if (pa->exp < pb->exp)//如果指数a小于指数b { pre_pa = pa; pa = pa->next; } else if (pa->exp == pb->exp)//等于 { pa->coef = pa->coef - pb->coef; if (pa->coef == 0)//系数相减为0 { pre_pa->next = pa->next; delete pa; pa = pre_pa->next; } else//不为0 { pre_pa = pa; pa = pa->next; } pre_pb->next = pb->next;//删除pb结点 delete pb; pb = pre_pb->next; } else//pb插入pa前 { Node pre_pa->next = pb; pb->coef = -pb->coef; pb->next = pa; pre_pa = pb; pb = r; pre_pb->next = pb; } } if (pb) { pre_pa->next = pb; delete b.head; } } template Linklist { head = new Node head->next = NULL; } template Linklist { head = new Node Node for (int j = 0; j < i; j++) { Node s->coef = a[j]; s->exp = b[j]; p->next = s; p = s; ; } p->next = NULL; } template Linklist { Node while (p) { Node p = p->next; delete q; } head = NULL; } template void Linklist { Node p = head->next; while (p) { cout << "(" << p->coef << "," << p->exp << ")"; p = p->next; if (p) cout << "+"; } cout << endl; } int main() { int a[4] = { 3,7,5,9 }; int b[4] = { 1,17,18 }; int c[3] = { -9,8,22 }; int d[3] = { 8,1,7 }; Linklist cout << "原多项式x1为"; x1.output(); cout << "原多项式x2为"; x2.output(); x1.sort(); x2.sort(); cout << "多项式相加为"; x1.add(x2); x1.output(); x3.sort(); x4.sort(); cout << "多项式相减为"; x3.sub(x4); x3.output(); system("pause"); return 0; } 测试结果: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |