一般用兩個類,結點類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...