資料結構(C ) 一元多項式求和

2021-09-27 12:26:23 字數 1749 閱讀 4615

學習鍊錶的結尾就是一些使用鍊錶的基本例項,比如約瑟夫環問題等。今天做了做一元多項式求和的鍊錶實現,其中主要的思想就是乙個普通的尾插法鍊錶,主要的區別也只是有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...