用鍊錶實現的一元多項式演算法

2021-04-16 06:09:44 字數 3131 閱讀 7290

#include

#include

#include"stdio.h"

typedef struct

polynomial;

typedef struct lnode

lnode,*link;

void createlink(link &l,int n);

void printlist(link l);

void addpolyn(link &pc,link pa,link pb);

void substractpolyn(link &pc,link pa,link pb);

void copylink(link &pc,link pa);

void mulpolyn(link &pc,link pa,link pb);

int locatelink(link pa,link e);

void destroylink(link &l);

int comparenum(int i);

void destroylink(link &l)

delete l;

l=null;

}void createlink(link &l,int n)

link p,newp;

//int k=0;

l=new lnode;

l->next=null;

(l->data).expn=-1;//建立頭結點

p=l;

/*newp=new lnode;

cout<<"請輸入第1項的係數和指數:"<>(newp->data).coef;

cout<<"指數:";

cin>>(newp->data).expn;

p->next=newp;

newp->next=null;*/

for(int i=1;i<=n;i++)

while((p->next!=null)&&((p->next->data).expn<(newp->data).expn))

if(!locatelink( l, newp))

else

/*輸出鍊錶*/

void printlist(link l)

if((p->data).coef<0)

p=p->next;

while(p!=null/*&&(p->data).coef!=0*/)

if((p->data).coef<0)

p=p->next;}}

coutvoid copylink(link &pc,link pa)

}/*將兩個一元多項式相加*/

void addpolyn(link &pc,link pa,link pb)

else if(p1->data.expn>p2->data.expn)

else

else

}if(p1!=null)

if(p2!=null)

/*將兩個多項式相減*/

void substractpolyn(link &pc,link pa,link pb)

addpolyn(pc,pa,pt);

destroylink(pt);

}//清屏函式

void clear()

addpolyn(pd,pc,p);

copylink(pc,pd);

p1=p1->next;

p2=pb->next;

destroylink(p);

destroylink(pd);}/*

link p,q,r,pd,pe;

pc=new lnode;

pc->next=null;

pe=new lnode;

pe->next=null;

p=pa->next;

q=pb->next;

while(p!=null)

destroylink(pe);

p=p->next;

q=pb->next;

}*/}

//選單函式

void menuprint()

void main()

createlink(lb,n);

clear();

break;      

case 2:

if(la==null||lb==null)

addpolyn(l,la,lb);

cout<<"相加的兩個一元多項式為:"

printlist(lb);

cout<<"相加後的結果為:"

clear();

destroylink(l);

break;

case 3:

if(la==null||lb==null)

substractpolyn(l,la,lb);

cout<<"相減的兩個一元多項式為:"

printlist(lb);

cout<<"相減後的結果為:"

clear();

destroylink(l);

break;    

case 4:

if(la==null||lb==null)

mulpolyn(l,la,lb);

cout<<"相乘的兩個一元多項式為:"

printlist(lb);

cout<<"相乘後的結果為:"

destroylink(l);

clear();

break;

case 5:

if(la==null||lb==null)

cout<<"第乙個一元多項式為:"

cout<<"第二個一元多項式為:"

clear();

break;

case 6:

if(la&&lb)

else

break;

case 7:

exit(0);

default:

cout<<"您的輸入有誤,請重新選擇操作……"

}

一元多項式加法鍊錶實現

使用鍊錶實現一元多項式加法 並使用已有鍊錶返回運算結果 一元多項式求和 void sumlist slist a,slist b else output m output n t m next while m next null n next null else if m next exp n ne...

鍊錶實現一元多項式相加

c 鍊錶實現一元多項式相加 如下 輸入多項式按次數從高到低排列 include include using namespace std intmain 定義節點型別,coe表示x前的係數,order表示x的次數 int coe,order int i int nodenuma 多項式a的項數 pri...

用鍊錶實現一元稀疏多項式的相加

由於一元多項式包含係數項和指數項,其係數為float型,指數項為int型,往往將其兩項組合成為乙個結構元素型別,將多項式看成是乙個有序表,則多項式定義中的各個操作均可利用有序表操作來完成。建立多項式演算法 操作結果 輸入m項的係數和指數,建立一元多項式p 銷毀多項式演算法 初始條件 一元多項式p已存...