資料結構 C語言 一元多項式計算器

2021-10-05 14:12:15 字數 2253 閱讀 9978

#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...