學習鍊錶的結尾就是一些使用鍊錶的基本例項,比如約瑟夫環問題等。今天做了做一元多項式求和的鍊錶實現,其中主要的思想就是乙個普通的尾插法鍊錶,主要的區別也只是有coef和exp兩個資料元素了,再有就是求和實質其實就是兩個鍊錶的相加操作。
struct node
;
coef是係數,exp是指數,next是指向下一節點的指標。
linklist()
r->next =
null
;}
這是乙個基本的尾插法構造鍊錶的程式,我們在這裡定義如果其中有一項輸入為0時代表輸入結束。
linklist operator
+(linklist &l)
else
if(p-
>exp > q-
>exp)
// 第二種情況
else
// 第三種情況,當指數相等時的情形
else
qre-
>next = q-
>next;
delete q;
// 無論什麼情況,都需要把q鏈上的結點刪除掉
q = qre-
>next;}}
if(p ==
null
) pre-
>next = q;
// 還有一部操作就是如果p鏈空了,直接把q鏈上後面的結點接到p鏈後方,成為同一條鏈
l.first-
>next =
null
;return
*this
;}
主要看注釋
void
print()
cout << endl;
}
這個也就是乙個基本鍊錶輸出操作
int
main()
#include
using
namespace std;
struct node
;class
linklist
r->next =
null;}
linklist operator
+(linklist &l)
else
if(p-
>exp > q-
>exp)
else
else
qre-
>next = q-
>next;
delete q;
q = qre-
>next;}}
if(p ==
null
) pre-
>next = q;
l.first-
>next =
null
;return
*this;}
void
print()
cout << endl;}}
;int
main()
後來仔細考慮了一下這個一元多項式求和,在處理係數和指數時存在的兩條鏈指標互調還是需要好好學習的,之前在鍊錶的學習中是沒有遇見過的,今天積累到了
還是想繼續考慮一下如果我輸入的指數不是按照順序的該咋辦 (lll¬ω¬)hhh
一元多項式求和
處理好指標的問題。當某a鍊錶某項指數大於b鍊錶某項指數時,將b項插入到a鍊錶。當a鍊錶某項小於b鏈某項指數,將a鍊錶指標指向下一項。當a項等於b項時,將他們的係數相加,如果係數和為0,將a鏈和b鏈的項都刪除。否則,刪除該b項。這裡是將結果直接存放到a鍊錶,如果新建乙個鍊錶來儲存可能會更簡單些。pol...
資料結構 一元多項式
void initlist polynode l 初始化多項式單鏈表 int getlength polynode l 求多項式單鏈表的長度 polynode getelem polynode l,int i 返回多項式單鏈表中第i個結點的指標 polynode locate polynode l,...
資料結構 一元多項式相加
一元多項式相加 include include struct node typedef struct node polynomial 建立帶有表頭的鍊錶 poly用於儲存係數和指數 polynomial createpoly int poly,int len return head 銷毀鍊錶 voi...