參考文章:
自己敲了一遍,先mark一下,以後理解可能會更深一點。
亮點在於對第二個多項式進行了逆反。
#include#includetypedef struct node
listnode;
listnode *createlist(int n);//建立鍊錶
int printlist(listnode* head);//列印鍊錶
int inverselist(listnode* head);//逆反鍊錶
listnode* multi(listnode* head_a, listnode* head_b);//鍊錶相乘
int main()
listnode *createlist(int n)
head->next = null;
int i = 0;
for (i = 0; i < n; i++)
printf("請輸入第%d個係數和指數:", i + 1);
scanf("%f %d", &coe, &exp);
p->coe = coe;
p->exp = exp;
p->next = null;
pre->next = p;
pre = p;//插入結點
} return head;
}int inverselist(listnode *head)
return 0;
}int printlist(listnode* head)
printf("%1.1f*x^%d\n", p->coe, p->exp);
return 0;
}listnode* multi(listnode* head_a, listnode* head_b)
head_c->coe = 0.0;
head_c->exp = 0;
head_c->next = null;
pc = head_c;
inverselist(head_b);//鍊錶b逆反
float coe = 0.0;//係數和
int k = 0;
for (k = exp_max; k >= 0; k--)
else
}if (coe != 0.0)//有係數,則將此結點插入鍊錶c中
newnode->coe = coe;
newnode->exp = k;
newnode->next = null;
pc->next = newnode;
pc = newnode;
coe = 0.0;
} }inverselist(head_b);
return head_c;
}
單向鍊錶 練習3 7 多項式相乘
3.7 編寫乙個函式將兩個多項式相乘,用乙個鍊錶實現。你必須保證輸出的多項式按冪次排列並且最多有一項為任意冪。多項式相乘 position multiply2pol position h1,position h2 排序合併 mpsort h,size return h 氣泡排序多項式,按照項的次數從...
多項式相乘求組合數RC(n,r) 鍊錶實現
設集合s n1 n2 nt n,從s中任取r個,求其組合數rc n,r 設多項式 則rc n,r 就是多項式中xr的係數,即 rc n,r ar。根據上述方法,程式設計實現 求任意的從s中任取r個的組合數rc n,r 且輸出ai i 1,2.r 解決思路 1.每個多項式用乙個鍊錶表示。多項式的係數和...
鍊錶實現多項式相加
均已除錯通過,編譯器為dev c 多項式相加程式,用鍊錶實現 係數 coefficient 指數exponent 多項式 multinomial include typedef struct lnode lnode,linklist 建立兩個鍊錶 int main while pr1 next pr...