数据结构-多项式相乘

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

多项式相乘

•问题描述

此程序解决的是一元多项式相乘的问题。定义两个一元多项式,然后进行两个一元多项式的相乘。最后得到一个结果,并按升幂输出最终的多项式。

•设计思路

定义一个结构体,里面包含一元多项式的符号、系数、指数。对多项式进行输入时,先输入多项式的项数,然后从第一项的系数开始输入,然后输入第一项的指数,直至第一项输入完毕。然后开始输入第二项,输入第二项的方法与输入第一项的方法相同。在进行相乘时,用第二项的每个元素去乘第一项的每个元素。最终合并同类项的时候,把后面指数项加到与前面有共同指数的项的上面,然后删除该项。

•数据结构设计

将多项式因子的符号、系数、指数封装成一个结构为顺序表类型

•功能函数设计

void sort(LinkYinzi& Head)排序函数,采用冒泡排序对多项式进行排序

void PrintList(const LinkYinzi Head)输出多项式函数

void Creat_List(LinkYinzi& Head, int num)创建多项式函数

void DelList(LinkYinzi& Head, int n)删除多项式中某一项函数

void multip(const LinkYinzi Head1, const LinkYinzi Head2)多项式相乘函数

void menu_elect( LinkYinzi Head1, LinkYinzi Head2)功能选择函数

•程序代码

#include

using namespace std;

typedef struct Yinzi{

char sign;

float coef;//系数

int expn;//指数

Yinzi* next;

}Yinzi,*LinkYinzi;

void sort(LinkYinzi& Head){

LinkYinzi Q;//采用冒泡排序对多项式进行排序

for(LinkYinzi P1 = NULL; P1 != Head->next->next; P1 = Q)

for(LinkYinzi P2 = Head->next; P2->next != P1; P2 = P2->next){

if(P2->expn > P2->next->expn){

int temp1;

double temp2;

char temp3; //temp3是交换变量

temp2 = P2->coef;

P2->coef = P2->next->coef;

P2->next->coef = temp2;

temp3 = P2->sign;

P2->sign = P2->next->sign;

P2->next->sign = temp3;

temp1 = P2->expn;

P2->expn = P2->next->expn;

P2->next->expn = temp1;

}

Q = P2->next;//此处让Q为本次执行后的P2的下一个,以便P1=Q让P1成为P2的下一个,作为下一次循环的结束标志。

}

}//冒泡排序(升序)

void PrintList(const LinkYinzi Head){

LinkYinzi p = Head ->next;

if(p != NULL ){

if(p->coef != 0){//系数不为0

if(p->expn != 0){//指数不为0

if(p->expn != 1){

if(p->coef == 1)

cout << "x^" << p->expn;

else

cout << p->coef << "x^" << p->expn;

}

else{

if(p->coef == 1)

cout << "x";

else

cout << p->coef << "x";

}

}

else

cout << p->coef;

}

p = p->next;

}//输出第一项

while(p != NULL){

if(p->sign == '+'){

if(p->coef != 0){

if(p->expn != 0){

if(p->expn != 1){

if(p->coef == 1)

cout << '+' << "x^" << p->expn;

else

cout << '+' << p->coef << "x^" << p->expn;

}

else{

if(p->coef == 1)

cout << '+' << "x";

else

cout << '+' << p->coef << "x";

}

}

else

cout << '+' << p->coef;

}

else{

p = p->next;

continue;

}

}

if(p->sign == '-'){

if(p->coef != 0){

if(p->expn != 0){

if(p->expn != 1){

if(p->coef == -1)

cout << '-' << "x^" << p->expn;

else

cout << p->coef << "x^" << p->expn;

}

else{

if(p->coef == -1)

cout << '-' << "x";

else

cout << p->coef << "x";

}

}

else

cout << p->coef;

}

else{

相关文档
最新文档