是資料結構課程的引例之一,主要使用單鏈表來實現。有助於有序線性序列(線性表)組織和管理的理解。
本文內容較為簡單,實現比較基礎,沒有考慮到亂序輸入等情況,有較大優化空間。
使用c語言實現。
# include
# include
# define stop-1
typedef struct _node node;
typedef struct _list list;
void
getpoly
(list* plist)
;// 獲取多項式(呼叫getmo
void
getmo
(list* plist, int ai, int exp)
;// 獲取單項式
list polyplus
(list* plist_1, list* plist_2)
;// 加和多項式(呼叫plusmo、attachmo、moveplist)
void
plusmo
(list* plusres, list* plist_1, list* plist_2)
;// 當單項式指數相等且和不為0時,係數相加
void
attachmo
(list* plusres, list* plist)
;// 當單項式指數不同時,直接附加到結果
void
moveplist
(list* plist)
;// 根據運算情況,移動多項式鍊錶中指向單項式的tail指標
void
printres
(list* plusres)
;// 根據運算結果,以合理格式輸出
void
polyfree
(list* plist)
;// 釋放多項式鍊錶的空間
int main()
; list list_2 =
;puts
("請按照第乙個多項式指數從大到小輸入(係數,指數),沒有常數項則以(0, 0)為結尾。");
getpoly
(&list_1)
;puts
("請按照第二個多項式指數從大到小輸入(係數,指數),沒有常數項則以(0, 0)為結尾。");
getpoly
(&list_2);/*
依據輸入情況輸出運算結果
如果兩個多項式存在有效輸入,定義儲存結果的多項式鍊錶,呼叫polyplus計算並輸出,最後釋放空間
如果只有list_1存在有效輸入,輸出list_1
如果只有list_2存在有效輸入,輸出list_2
如果兩個多項式輸入均無效,則輸出提示
*/if
(list_1.head && list_2.head)
else
if(list_1.head)
else
if(list_2.head)
else
/* 釋放儲存輸入多項式的兩個鍊錶空間
*/polyfree
(&list_1)
;polyfree
(&list_2)
;return0;
}void
getpoly
(list* plist)
}while
(exp !=0)
;}void
getmo
(list* plist, int ai, int exp)
else
}list polyplus
(list* plist_1, list* plist_2)
; plist_2-
>tail = plist_2-
>head;
for(plist_1-
>tail = plist_1-
>head; plist_1-
>tail-
>exp !=
stop
|| plist_2-
>tail-
>exp !=
stop;)
else
if(plist_1-
>tail-
>exp > plist_2-
>tail-
>exp)
else
if(plist_2-
>tail-
>exp > plist_1-
>tail-
>exp)
}return plusres;
}void
plusmo
(list* plusres, list* plist_1, list* plist_2)
else}}
void
attachmo
(list* plusres, list* plist)
else
}void
moveplist
(list* plist)
void
printres
(list* plusres)
}else
}void
polyfree
(list* plist)
}
單鏈表實現多項式相加
include include struct node void destroypoly struct node poly 釋放實現多項式申請的空間 return struct node createnode int coe,int exp 申請空間存放多項式當前項 struct node crea...
單鏈表實現多項式相加
本程式使用鍊錶實現了兩個多項式的相加。多項式的相加主要是考慮相加項的指數是否相同,如果相同則係數相加,指數不變。本程式當中,實現該過程的思想為,在錄入乙個多項式所有項的係數和指數以後,使用鍊錶思想構造一條單鏈表,記作鍊錶a,結 點儲存項的係數和指數。依照此法,構建第二條多項式鍊錶,記作鍊錶b。這樣準...
求兩個多項式的和
輸入兩個多項式,計算它們的和。每個多項式有若干對整數表示,每組整數中,第乙個整數表示係數 非0 第二個整數表示該項的次數。如由3 3 5 2 1 4 0表示3x 5 2 x 4其中第乙個3表示該多項式由三個整數對表示。輸入為兩行,分別表示兩個多項式。表示每項的整數對按照次數大小降序給出。次數絕對值小...