資料結構實驗,多項式類

2021-06-22 07:01:51 字數 3080 閱讀 5378

多項式類標頭檔案:

/ - 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...