單鏈表應用 多項式實現(C )

2021-10-24 04:21:03 字數 3854 閱讀 7893

​ 一般用兩個類,結點類linknode和鍊錶類list,協同表示單鏈表,主要有3種方式:

class

list

;class

linknode

;class

list

;

class

list

; linknode* first;

};

class

linknode

;class

list

:public linknode

;

template

<

class

t>

struct linknode

linknode

(const t& item, linknode

*ptr =

null)}

;template

<

class

t>

class

list

:public linearlist

list

(const t& x)

list

(list

& l)

;//copy construct function

~list()

//operations

void

makeempty()

;int

length()

const

; linknode

*gethead()

const

linknode

*search

(t x)

;//search x

linknode

*locate

(int i)

;//search the place of i th element

bool

getdata

(int i, t& x)

const

;void

setdata

(int i, t& x)

;bool

insert

(int i, t& x)

;bool

remove

(int i, t& x)

;bool

isempty()

const

bool

isfull()

const

void

sort()

;void

input()

;void

output()

; list

&operator

=(list

& l)

;protected

: linknode

*first;

};

/**************************************含表頭*******************************************/

//多項式結點定義

struct term

term*

insertafter

(float c,

int e)

;friend ostream&

operator

<<

(ostream&

,const term&);

};//多項式類的定義

class

polynomal

polynomal

(polynomal& r)

;int

maxorder()

;//計算最大階數

term*

gethead()

const

//取鍊錶的表頭指標

private

: term* first;

friend ostream&

operator

<<

(ostream& out,

const polynomal& x)

;friend istream&

operator

>>

(istream& in, polynomal& x)

;friend polynomal operator

+(polynomal&

, polynomal&);

friend polynomal operator

*(polynomal&

, polynomal&);

};

//結點

//在當前呼叫此函式的物件後插入乙個新項

term* term::

insertafter

(float c,

int e)

//term的友元函式,輸出乙個項x的內容到輸出流out中

ostream&

operator

<<

(ostream& out,

const term& x)

return out;

}

//多項式

//copy construct function

polynomal::

polynomal

(polynomal& r)

}int polynomal::

maxorder()

//polynomal類的友元函式,從輸入流in輸入各項,用尾插法建立乙個多項式

istream&

operator

>>

(istream& in, polynomal& x)

return in;

}//輸出帶附加頭結點的多項式鍊錶x

ostream&

operator

<<

(ostream& out,

const polynomal& x)

out << endl;

return out;

}

加法

//多項式加法

polynomal operator

+(polynomal& a, polynomal& b)

pa = pa-

>link;

pb = pb-

>link;

}else

if(pa-

>exp < pb-

>exp)

else

}//檢查剩餘

if(pa !=

null

) p = pa;

else

p = pb;

while

(p !=

null

)return c;

}

乘法

polynomal operator

*(polynomal& a, polynomal& b)

pa = pa-

>link;

}for

(int i =

0; i <= maxexp; i++

)delete

result;

} pc-

>link =

null

;return c;

}

單鏈表實現多項式相加

include include struct node void destroypoly struct node poly 釋放實現多項式申請的空間 return struct node createnode int coe,int exp 申請空間存放多項式當前項 struct node crea...

單鏈表實現多項式相加

本程式使用鍊錶實現了兩個多項式的相加。多項式的相加主要是考慮相加項的指數是否相同,如果相同則係數相加,指數不變。本程式當中,實現該過程的思想為,在錄入乙個多項式所有項的係數和指數以後,使用鍊錶思想構造一條單鏈表,記作鍊錶a,結 點儲存項的係數和指數。依照此法,構建第二條多項式鍊錶,記作鍊錶b。這樣準...

單鏈表應用 一元多項式

單鏈表應用 一元多項式 問題描述 編寫乙個程式用單鏈表儲存多項式,並實現兩個一元多項式a與b相加的函式。a,b剛開始是公升序的,a與b之和按降序排列。例如 多項式a 1.2x 0 2.5x 1 3.2x 3 2.5x 5 多項式b 1.2x 0 2.5x 1 3.2x 3 2.5x 5 5.4x 1...