)用单链表表示一元多项式,并实现一元多项式的输入和输出。 如: 2)在 1)的基础上,建立一个函数,计算并返回一元多项式中一共有多少项数据。 3)在 1)的基础上,建立一个函数,可以得到一元多项式中指数最大的系数并打印输出。 4)在 1)的基础上,建立一个函数,输入系数和指数,如果元素存在,则删除之,否则打印出错信息。
时间: 2023-05-23 10:06:32 浏览: 41
1. 单链表表示一元多项式:
```c++
struct Elem{
double coef; // 系数
double expn; // 指数
Elem* next;
};
class Polynomial{
private:
Elem* head;
public:
Polynomial(){
head = new Elem();
head->next = NULL;
}
~Polynomial(){
Elem* p = head;
while(p){
Elem* q = p;
p = p->next;
delete q;
}
}
void insertElem(double coef, double expn){
Elem* p = head;
while(p->next && p->next->expn > expn){
p = p->next;
}
if(p->next && p->next->expn == expn){
p->next->coef += coef;
if(p->next->coef == 0){
Elem* q = p->next;
p->next = q->next;
delete q;
}
} else{
Elem* tmp = new Elem();
tmp->coef = coef;
tmp->expn = expn;
tmp->next = p->next;
p->next = tmp;
}
}
void printPoly(){
Elem* p = head->next;
while(p){
if(p != head->next && p->coef > 0) cout << "+";
cout << p->coef << "x^" << p->expn;
p = p->next;
}
cout << endl;
}
};
```
2. 计算一元多项式中一共有多少项数据:
```c++
int countItems(){
int cnt = 0;
Elem* p = head->next;
while(p){
cnt++;
p = p->next;
}
return cnt;
}
```
3. 得到一元多项式中指数最大的系数并打印输出:
```c++
void printMax(){
Elem* p = head->next, *maxElem = p;
while(p){
if(p->expn > maxElem->expn){
maxElem = p;
}
p = p->next;
}
cout << "Max item: " << maxElem->coef <<"x^" << maxElem->expn << endl;
}
```
4. 输入系数和指数,如果元素存在,则删除之,否则打印出错信息。
```c++
void removeElem(double coef, double expn){
Elem* p = head;
while(p->next){
if(p->next->coef == coef && p->next->expn == expn){
Elem* q = p->next;
p->next = q->next;
delete q;
return;
}
p = p->next;
}
cout << "Error: No such item!" << endl;
}
```