多項式類標頭檔案:
/ - 2013.5.24
/** *該檔案定義乙個polynomial(多項式)類
*類中使用帶頭節點的鏈式佇列儲存多項式資訊
*每個節點的c表示多項式每一項的係數(頭結點的c表示項數)
*e表示每一項的指數
*輸入資料格式以下為例:
*(-3.1x8)(+11x9)(+2x)(+7)
*(9x)(-9x)(3x)
*(6x)(-3)(-x)(+4.4x2)(-1.2x9)
*(-6x)(-3)(+5.4x2)(-x2)(+7.8x15)
*該類過載了輸入輸出運算子,和加減法運算子
*其中按照實驗指導書中的要求加法操作使用對佇列的操作實現
*減法運算直接呼叫加法運算的operation+() 函式
*/#ifndef polynomial_h
#define polynomial_h
#include #include #include #include using namespace std;
//多項式節點類
class polnode
;//建構函式
polnode::polnode()
polnode::polnode(double cc,int ee)
//多項式類
class polynomial
;//成員函式實現檔案
#include "polynomial.cpp"
#endif
實現檔案:
/**
*2014.5.20 - 2014.5.24
*該檔案是polynomial類的函式實現檔案
*////建構函式
polynomial::polynomial()
//複製建構函式
polynomial::polynomial(const polynomial & b)
this->head->c = b.head->c;
}//過載賦值運算子
polynomial & polynomial::operator=(const polynomial & b)
head = new polnode ;
//複製該多項式
polnode * k;
p = b.head->next;
k = this->head;
while( p!=null )
this->head->c = b.head->c;
}//下面這個函式存在bug,但是沒有找出到底那裡出了錯 ::>_<::
//規格化,刪除係數為0的項
polynomial polynomial::standardization( )
if( p->next != null && p->next->c != 0 )
p = p->next;
} return *this;
}///過載輸入運算子
istream& operator>>(istream & in, polynomial & b)
b.head = new polnode ;
//得到表示多項式的字串
string str;
stringstream stream;
in>>str;
int posofx,posofr;
while( str.length() != 0 )
else if( cc.length()==1 && (cc[0]=='+') )
else
if( posofx+1 == posofr )
else
} else
//用c,e構造乙個新的項加入多項式中
polnode * q = new polnode(c,e);
polnode * p = b.head;
while( p->next != null && p->next->e > q->e )
if( p->next != null && p->next->e == q->e )
else
//項數+1
b.head->c ++ ;
//從字串中刪掉表示處理過的這一項的子串
str.replace(0,posofr+1,"");
} return in;
}///過載輸出運算子
ostream& operator<<(ostream & out, polynomial b)
if( b.head->c == 0 )
else if( p==null && q!=null )
else if( p->e > q->e )
else if( p->e < q->e )
else if( p->e == q->e )
} return temp;
}//過載減法運算子
polynomial polynomial::operator-(const polynomial &b) const
return *this + temp ;
}
測試函式:
/
//對polynomial類的測試函式
#include #include #include #include #include "polynomial.h"
using namespace std;
int main()
{ freopen("in","r",stdin);
freopen("out","w",stdout);
polynomial pol1;
cin>>pol1;
cout<>pol2;
cout<
(7)(-5x8)(11x9)
(-7)(5x8)(11x9)
(-3.1x8)(0x9)(+2x)(+7)
(9x)(-9x)(3x)
(6x)(-3)(-x)(+4.4x2)(-1.2x9)
(-6x)(-3)(+5.4x2)(-x2)(+7.8x15)
資料結構實驗 實驗二 一元多項式相加
一 實驗目的 1 了解鏈式儲存結構的基本知識 2 掌握演算法思想和資料結構的描述 3 結合一元多項式相加的運算規則。二 實驗內容 結合書上第41頁的例子,採用鏈式儲存結構,將兩個線性鍊錶表示的一元多項式相加,並輸出。此一元多項式遵循多項式相加運算規則 對於兩個一元多項式中存在指數相同的項時,其對應係...
資料結構 實驗二(一元多項式相加)
結合書上實驗指導書上的例子,採用鏈式儲存結構,將兩個線性鍊錶表示的一元多項式相加,並輸出。此一元多項式遵循多項式相加運算規則 對於兩個一元多項式中存在指數相同的項時,其對應係數相加。合併後係數和為零時,刪除 和多項式 中此項 合併後係數和不為零時,則構成 和多項式 中的一項。對於兩個一元多項式中存在...
資料結構之多項式(C )
資料結構多項式,運用到類的複製建構函式,靜態成員等基礎知識,簡單實現了加法和乘法運算,但是對乘法 複雜度比較高 暫時做這樣處理。對於多項式的構成這些不做多餘介紹。本 純手工製作,難免有不足之處。標頭檔案 polynomial h ifndef polynomial h define polynomi...