#include
#include
typedef
struct polynode *polynomial;
//儲存結構為:帶頭節點的單鏈表
struct polynode
;typedef polynomial plist;
typedef
struct arrayarray;
plist polyread()
;//讀入乙個多項式
array creatarray()
;//初始化乙個線性表
plist increasingpower
(plist p)
;//將乙個降冪的多項式公升冪排序
plist add
(plist p1,plist p2)
;//兩個多項式相加
plist sub
(plist p1,plist p2)
;//兩個多項式相減
plist mult
(plist p1,plist p2)
;//兩個多項式相乘
void
printpoly
(plist p)
;//輸出多項式
void
freelink
(plist p)
;//清空鍊錶
plist multtool
(plist p1,plist p2)
;//乘法所需用到的乙個工具,用來實現乙個多項式中的某一項與另乙個多項式做乘法運算
intmain()
return0;
}plist polyread()
r->next=
null
;return p;
}array creatarray()
plist increasingpower
(plist p)
freelink
(p);
//釋放儲存降冪排序多項式的單鏈表
arr.length++
;//利用線性表的有序性,將已經公升冪排好序的多項式重新轉到線性表中
for(
int i=
0;i++i)
r->next=
null
;free
(arr.data)
;//釋放線性表中的元素所占用的空間
return pi;
}plist mult
(plist p1,plist p2)
return pp;
}plist add
(plist p1,plist p2)
else
if(t1->expon < t2->expon)
else
t1=t1->next;
t2=t2->next;}}
//當t2為空時,將t1中剩下的元素放到單鏈表中
while
(t1)
//當t1為空時,將t2中剩下的元素放到單鏈表中
while
(t2)
r->next=
null
;return ps;
}plist sub
(plist p1,plist p2)
ps=add(p1,p2)
;return ps;
}void
printpoly
(plist p)
else}}
printf
("\n");
}void
freelink
(plist p)
free
(p);
}plist multtool
(plist p1,plist p2)
r->next=
null
;return t;
}
在設計一元多項式計算器時,考慮到多項式可能較為稀疏,所以採用單鏈表的儲存方式。
在設計中遇到的困難:如何將兩個多項式相乘、如何將降冪的多項式轉換為公升冪順序的多項式並輸出。
解決方案:對於多項式相乘,利用乙個工具函式,將多項式的某一項與另乙個多項式的每一項相乘並返回,將返回的多項式相加便可得到結果;對於逆序輸出,利用乙個線性表,將單鏈表中的元素存到乙個線性表中,多項式的指數為線性表的下標,因此存入時,便已經按公升冪的順序排好了,只需將線性表中的元素再次存回單鏈表即可得到公升冪的結果。
資料結構實驗 一元多項式計算器
實驗內容 設有一元多項式am x 和bn x 程式設計實現多項式am x 和bn x 的加法 減法和乘法運算。其中多項式描述為 am x a0 a1x1 a2x2 a3x3 amxm bn x b0 b1x1 b2x2 b3x3 bnxn。輸入和輸出 1 輸入 struct polynode typ...
一元多項式計算器 C 實現
1 任務描述 設有一元多項式am x 和bn x 程式設計實現多項式am x 和bn x 的加法 減法和乘法運算。其中多項式描述為 am x a0 a1x1 a2x2 a3x3 amxm bn x b0 b1x1 b2x2 b3x3 bnxn。2 主要資料型別與變數 使用到的標頭檔案 include...
一元多項式加法計算器
include include typedef struct polynode polynode,polylist 輸入資料,邊輸入邊排序進鍊表 void inputdataandsortingdata polylist polynomial,int n 初始化多項式鍊錶 void init pol...