class多項式(鍊錶實現)

2021-08-08 23:51:35 字數 3171 閱讀 6052

直接上**是不是不好?

如果是大佬就直接跳過這個階段。

鍊錶實現的多項式鍊錶

以每乙個節點代表多項式的乙個項,常數項可以理解為次數為0的項

再用指標將項與項之間聯絡起來。可以說是資料結構聯絡必做的東西!

#include #include #include #include #include #include #include using namespace std;

#define eps 1e-6

struct node;

bool operator > (const node& n)

bool operator < (const node& n)

bool operator == (const node& n)

bool operator >= (const node& n)

bool operator <= (const node& n)

}; class polynome;

polynome::polynome():first(null),size(0){};

polynome::~polynome()

void polynome::insert(double r,int e,int pos)

node *current = first;

node *prev = null;

int p = 0;

for (int i = 0; i < pos;++i)//經過移動,使得將新節點放到prev和current之間

node *n = new node(r,e,current);

prev->next = n;

++size;

}void polynome::remove(int pos)

node* current = first;

node* prev = null;

for (int i=0;i < pos;++i)//經過移動,使得要刪除的點就是current

prev -> next = current ->next;

delete current;

--size;

}int polynome::length()const

void polynome::clear()

polynome::polynome(const polynome & pl)

*this = pl;

}polynome& polynome::operator = (const polynome & pl)

first = new node(pl.first -> ratio, pl.first -> exponent);

node *current = first;

node *current_pl = pl.first -> next;

while (current_pl != null)

size = pl.size;

return *this;

}istream& operator >> (istream & cin, polynome & p)

p.sort();

return cin;

}ostream& operator << (ostream & cout, const polynome & p) else

if (current -> exponent == 0) else

} else if (current -> exponent == 1) else

} else else

} current = current -> next;

} return cout;

} void polynome::sort()

} }//完成排序

stackstack_exponent;

node *s,*prev;//用於刪除

for (node *p = first; p ; ) else

} //完成去重

//完成去不合理的0

prev = first;

if (first != null)else

} if (size > 1 && abs(first -> ratio) < eps ) }

//去除將多項式0轉換成數值0

if(size == 1 && first -> ratio == 0) else if (size == 0)

}polynome polynome::operator + ( polynome & p ) else if (it_p ->exponent < it_q -> exponent ) else if (it_p -> exponent > it_q -> exponent)

} while (it_p != null)

while (it_q != null)

new_polynome.sort();

return new_polynome;

}polynome polynome::operator - ( polynome & p ) else if (it_p ->exponent < it_q -> exponent ) else if (it_p -> exponent > it_q -> exponent)

} while (it_p != null)

while (it_q != null)

new_polynome.sort();

return new_polynome;

}polynome polynome::help_for_multiply (double r,int e)

new_polynome.sort();

return new_polynome;

}polynome polynome::operator * ( polynome & p )

return new_polynome;

}polynome polynome::dericative() else

} new_polynome.sort();

return new_polynome;

}double polynome::getnum(double x)

return sum;}

int main()

鍊錶實現多項式相加

均已除錯通過,編譯器為dev c 多項式相加程式,用鍊錶實現 係數 coefficient 指數exponent 多項式 multinomial include typedef struct lnode lnode,linklist 建立兩個鍊錶 int main while pr1 next pr...

多項式的鍊錶實現

include include typedef struct pnode pnode,polylist void initpl polylist pl pl coe 0 pl exp 0 pl next null void insertafter polylist pl,polylist pd vo...

鍊錶實現多項式相加

演算法attch c,e,d 建立乙個新結點,其係數 coef c 指數exp e 並把它鏈到 d 所指結點之後,返回該結點指標。polypointer attch int c int e polypointer d 演算法 padd 實現兩個多項式 a b 相加 c x a x b x polyp...