資源簡介
用鏈表實現兩個多項式相加的C語言源代碼,兩個多項式相加時,同類項的系數相加,無同類項的系數保持不變,想家完后再按升冪排序,結果放回鏈表中。是數據結構的作業,改編了網上的代碼,運行結果正確。
代碼片段和文件信息
#include
#include
#include
#define?LEN?sizeof(node)
typedef?struct?polynode?/*用單鏈表存儲多項式的結點結構*/
{
int?coef;?/*多項式的系數*/
int?exp;?/*指數*/
struct?polynode?*next;?/*next是struct?polynode類型中的一個成員,它又指向
struct?polynode類型的數據,以此建立鏈表*/
}node;/*若定為“node*list;“,意即node*與list同為結構指針類型*/
node?*?create(void)?/*指針函數,返回指針類型;用尾插法建立一元多項式的鏈表的函數*/
{
node?*h*r*s;
int?ce;
h=(node?*)malloc(LEN);?/*建立多項式的頭結點,為頭結點分配存儲空間*/
r=h;?/*r指針始終動態指向鏈表的當前表尾,以便于做尾插入,其初值指向頭結點*/
printf(“coef:“);
scanf(“%d“&c);?/*輸入系數*/
printf(“exp:?“);
scanf(“%d“&e);?/*輸入指針*/
while(c!=0)?/*輸入系數為0時,表示多項式的輸入結束*/
{
s=(node?*)malloc(LEN);?/*申請新結點*/
s->coef=c;?/*申請新結點后賦值*/
s->exp=e;?/*申請新結點后賦值*/
r->next=s;?/*做尾插,插入新結點*/
r=s;?/*r始終指向單鏈表的表尾*/
printf(“coef:“);
scanf(“%d“&c);
printf(“exp:?“);
scanf(“%d“&e);
}
r->next=NULL;?/*將表的最后一個結點的next置NULL,以示表結束*/
return(h);
}
void?polyadd(node?*polya?node?*polyb)/*一元多項式相加函數,用于將兩個多項式相加,然后將和多項式存放在多項式polya中,并將多項式ployb刪除*/
{
node?*p*q*pre*temp;
int?sum;
p=polya->next;/*令p和q分別指向polya和polyb多項式鏈表中的第一個結點*/
q=polyb->next;
pre=polya;?/*位置指針,指向和多項式polya*/
while(p!=NULL&&q!=NULL)?
- 上一篇:四階矩陣的求逆
- 下一篇:數據結構 通訊錄管理 課程設計C++單鏈表版
評論
共有 條評論