循环链表实现两个多项式相加主要代码
生活随笔
收集整理的這篇文章主要介紹了
循环链表实现两个多项式相加主要代码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
A=a1+b1*X+c1*X^2+d1*X^3+...
B=a2+b2*X+c2*X^2+d2*X^3+...
C=(a1+a2)+(b1+b2)*X+(c1+c2)*X^2+(d1+d2)*X^3+...
1 typedef int datatype; 2 3 typedef struct node{ 4 float coef;//系數(shù) 5 int exp;//指數(shù) 6 struct pnode *next; 7 } polynode; 8 polynode *POLYADD(polynode *A,polynode *B){//A,B是兩個多項式,函數(shù)返回A,B的多項式 9 int i,j,k; 10 polynode *ptr, 11 *q, //指向和多項式C的指針 12 *q1, //指向A多項式的指向 13 *q2; //指向B多項式的指向 14 float x; 15 q1=A; 16 q2=B; 17 q=malloc(sizeof(polynode)); //生成多項式的頭節(jié)點 18 q->coef=0; //將多項式的頭節(jié)點賦值 19 q->exp=-1; 20 q->next=q; //循環(huán)鏈表 21 ptr=q; //ptr指向和多項式的頭節(jié)點 22 q1=q1->next; //q1指向A的第一個節(jié)點 23 q2=q2->next; //q2指向B的第一個節(jié)點 24 while((q1!=A)&&(q2!=B)){ 25 //從低指數(shù)到搞指數(shù)逐項求和 26 if(q1->exp==q2->exp){ //指數(shù)相同的項 27 x=q1->coef+q2->coef; //系數(shù)相加 28 if(x!=0){ 29 q->next=malloc(sizeof(polynode)); 30 q=q->next; 31 q->coef=x; 32 q->exp=q1->exp; 33 } 34 q1=q1->next; //q1指向A的下一個節(jié)點 35 q2=q2->next; //q2指向B的下一個節(jié)點 36 } 37 else{ 38 //指向不同的項 39 q->next=malloc(sizeof(polynode)); 40 q=q->next; 41 if(q1->exp>q2->exp){ //如果A多項式當(dāng)前項的指數(shù)大于B的 42 q->coef=q2->coef; 43 q->exp=q2->exp; 44 q2=q2->next; 45 } 46 else{ 47 q->coef=q1->coef; //如果B多項式當(dāng)前項的指數(shù)大于A的 48 q->exp=q1->exp; 49 q1=q1->next; 50 } 51 } 52 } 53 while(q1!=A){ 54 q->next=malloc(sizeof(polynode)); 55 q=q->next; 56 q->coef=q1->coef; 57 q->exp=q1->exp; 58 q1=q1->next; 59 } 60 while(q2!=B){ 61 q->next=malloc(sizeof(polynode)); 62 q=q->next; 63 q->coef=q2->coef; 64 q->exp=q2->exp; 65 q2=q2->next; 66 } 67 q->next=ptr; //令多項式最末的節(jié)點指向頭節(jié)點 68 return ptr; //返回多項式頭節(jié)點指針 69 } View Code轉(zhuǎn)載于:https://www.cnblogs.com/aijianiula/archive/2013/05/23/3094130.html
總結(jié)
以上是生活随笔為你收集整理的循环链表实现两个多项式相加主要代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: axios中出现两次请求,OPTIONS
- 下一篇: __invoke,try{}catch(