-
大小: 3KB文件類型: .c金幣: 1下載: 0 次發(fā)布日期: 2021-05-27
- 語言: C/C++
- 標(biāo)簽:
資源簡介
用鏈表實現(xiàn)兩個多項式相加的C語言源代碼,兩個多項式相加時,同類項的系數(shù)相加,無同類項的系數(shù)保持不變,想家完后再按升冪排序,結(jié)果放回鏈表中。是數(shù)據(jù)結(jié)構(gòu)的作業(yè),改編了網(wǎng)上的代碼,運(yùn)行結(jié)果正確。
代碼片段和文件信息
#include
#include
#include
#define?LEN?sizeof(node)
typedef?struct?polynode?/*用單鏈表存儲多項式的結(jié)點結(jié)構(gòu)*/
{
int?coef;?/*多項式的系數(shù)*/
int?exp;?/*指數(shù)*/
struct?polynode?*next;?/*next是struct?polynode類型中的一個成員,它又指向
struct?polynode類型的數(shù)據(jù),以此建立鏈表*/
}node;/*若定為“node*list;“,意即node*與list同為結(jié)構(gòu)指針類型*/
node?*?create(void)?/*指針函數(shù),返回指針類型;用尾插法建立一元多項式的鏈表的函數(shù)*/
{
node?*h*r*s;
int?ce;
h=(node?*)malloc(LEN);?/*建立多項式的頭結(jié)點,為頭結(jié)點分配存儲空間*/
r=h;?/*r指針始終動態(tài)指向鏈表的當(dāng)前表尾,以便于做尾插入,其初值指向頭結(jié)點*/
printf(“coef:“);
scanf(“%d“&c);?/*輸入系數(shù)*/
printf(“exp:?“);
scanf(“%d“&e);?/*輸入指針*/
while(c!=0)?/*輸入系數(shù)為0時,表示多項式的輸入結(jié)束*/
{
s=(node?*)malloc(LEN);?/*申請新結(jié)點*/
s->coef=c;?/*申請新結(jié)點后賦值*/
s->exp=e;?/*申請新結(jié)點后賦值*/
r->next=s;?/*做尾插,插入新結(jié)點*/
r=s;?/*r始終指向單鏈表的表尾*/
printf(“coef:“);
scanf(“%d“&c);
printf(“exp:?“);
scanf(“%d“&e);
}
r->next=NULL;?/*將表的最后一個結(jié)點的next置NULL,以示表結(jié)束*/
return(h);
}
void?polyadd(node?*polya?node?*polyb)/*一元多項式相加函數(shù),用于將兩個多項式相加,然后將和多項式存放在多項式polya中,并將多項式ployb刪除*/
{
node?*p*q*pre*temp;
int?sum;
p=polya->next;/*令p和q分別指向polya和polyb多項式鏈表中的第一個結(jié)點*/
q=polyb->next;
pre=polya;?/*位置指針,指向和多項式polya*/
while(p!=NULL&&q!=NULL)?
評論
共有 條評論