單鏈表實現簡單的兩個多項式加和

2021-10-18 23:09:00 字數 2632 閱讀 6092

是資料結構課程的引例之一,主要使用單鏈表來實現。有助於有序線性序列(線性表)組織和管理的理解。

本文內容較為簡單,實現比較基礎,沒有考慮到亂序輸入等情況,有較大優化空間。

使用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表示該多項式由三個整數對表示。輸入為兩行,分別表示兩個多項式。表示每項的整數對按照次數大小降序給出。次數絕對值小...