**如下:
#include
#include
struct polynomial//結構體的定義
;void
print
(polynomial* l)
printf
("\n");
}int
getlength
(polynomial* l)
return i;
}void
newlist
(polynomial *
&l) l = head;
return;}
void
sortpol
(polynomial &l)
temp1 = temp1->next;}if
(temp2 != te***)
te*** = te***->next;}}
void
selfadd
(polynomial*
& l)
temp2 = temp2->next;
} temp1->next = temp2;
temp1 = temp2;
temp2 = temp2->next;}}
polynomial*
addpol()
//返回值為指標型別,避免使用指標的指標,易混淆
polynomial*
insertpol
(polynomial *l)
intmain()
這個程式中遇到的坑就比較多了,具體如下:
首先就是指標和引用,原本insertpolynomial函式是沒有返回值的,發現輸出的時候總是沒有第一項,原來是指標的問題,必須設為指標的指標才行,最終我選擇設定返回值,
然後就是兩個多項式相加的實現,考慮到輸入的多項式中可能有可以合併的式子,我就先寫了selfadd函式,後來才發現兩個多項式的相加可以轉化為將兩個多項式首尾相連之後做selfadd,
最後就是排序函式了,原本我是參考氣泡排序的思想來實現排序的,但是,由於氣泡排序中內層迴圈的終點是length-i;即每次外層迴圈過後,內層迴圈的終點要往前移動乙個位置,顯然單鏈表中往前移動乙個節點非常麻煩(用迴圈,從頭開始),最終我選擇參考選擇排序來實現
鍊錶實現一元多項式相加
c 鍊錶實現一元多項式相加 如下 輸入多項式按次數從高到低排列 include include using namespace std intmain 定義節點型別,coe表示x前的係數,order表示x的次數 int coe,order int i int nodenuma 多項式a的項數 pri...
一元多項式相加 鍊錶
問題描述 設計乙個一元稀疏多項式簡單計算器。基本要求 一元稀疏多項式簡單計算器的基本功能是 輸入並建立多項式 輸出多項式,輸出形式為整數序列 n,c1,e 1,c2,e 2,c n,en,其中n是多項式的項數,ci,e i分別是第i項的係數和指數,序列按指數降序排列 多項式a和b相加,建立多項式a ...
用鍊錶實現一元稀疏多項式的相加
由於一元多項式包含係數項和指數項,其係數為float型,指數項為int型,往往將其兩項組合成為乙個結構元素型別,將多項式看成是乙個有序表,則多項式定義中的各個操作均可利用有序表操作來完成。建立多項式演算法 操作結果 輸入m項的係數和指數,建立一元多項式p 銷毀多項式演算法 初始條件 一元多項式p已存...