一元n次多項式實驗二:一元多項式的基本運算我把first開到公有了。
實驗目的:掌握用線性表實現一元多項式的基本運算。
實驗內容:使用鏈式儲存實現一元多項式的加法、減法、乘法和求導。即:
c(x)= a(x)+b(x);c(x)= a(x)-b(x) c(x)= a(x)*b(x) c(x)= a』(x)
選單:1)c :分別建立兩個多項式a(x)和b(x),其中 輸入時按照 指數的公升序順序輸入,遇到係數為0則停止。例如:輸入 :
1 2 3 4 5 6 7 8
2 3 4 5 6 7 0
則生成的多項式分別為:
a(x)=x^2+3x^4+5x^6+7x^8
b(x)=2x^3+4x^5+6x^7
2)p:計算c(x)= a(x)+b(x),計算完畢後輸出c(x)的 結果
3)s: 計算c(x)= a(x)-b(x),計算完畢後輸出c(x)的 結果
4)m: 計算c(x)= a(x)*b(x),計算完畢後輸出c(x)的 結果
5)d: 計算c(x)= a』(x),計算完畢後輸出c(x)的 結果
6)v: 首先輸入乙個 float型資料,然後計算 a(x)並輸出計算的結果。
7)e: 分別清空a(x)、b(x)、c(x)三個多項式。
8)x: 退出程式。
例如:輸入
期望輸出
實際輸出
c
1 2 3 4 5 6 7 8 0
2 3 4 5 6 7 0sp
mdv2
x
c(x)=x^2-2x^3+3x^4-4x^5+5x^6-6x^7+7x^8
c(x)=x^2+2x^3+3x^4+4x^5+5x^6+6x^7+7x^8
c(x)=2x^5+10x^7+28x^9+52x^11+58x^13+42x^15
c(x)=2x+12x^3+30x^5+56x^7
2164.00
c(x)=x^2-2x^3+3x^4-4x^5+5x^6-6x^7+7x^8
c(x)=x^2+2x^3+3x^4+4x^5+5x^6+6x^7+7x^8
c(x)=2x^5+10x^7+28x^9+52x^11+58x^13+42x^15
c(x)=2x+12x^3+30x^5+56x^7
2164.00
c
2 2 0
2 2 3 3 0ps
mdv3.1
x
c(x)=4x^2+3x^3
c(x)=-3x^3
c(x)=4x^4+6x^5
c(x)=4x
19.22
c(x)=4x^2+3x^3
c(x)=-3x^3
c(x)=4x^4+6x^5
c(x)=4x
19.22
c
3 0 2 2 0
-2 2 3 3 0mv
2.1psd
x
c(x)=-6x^2+9x^3-4x^4+6x^5
11.82
c(x)=3+3x^3
c(x)=3+4x^2-3x^3
c(x)=4x
c(x)=-6x^2+9x^3-4x^4+6x^5
11.82
c(x)=3+3x^3
c(x)=3+4x^2-3x^3
c(x)=4x
通過所有測試
#include #includeusing namespace std;
class list;
class linknode
linknode (linknode *ptr = null)
~linknode() ;
};class list
~list ()
void makeempty (linknode *first); //鍊錶置空
int remove ( int i ); //需要補充的成員函式
void input( linknode *first);
void output( linknode *aa); //需要補充的成員函式
void sort( linknode *aa);
void insert(int val);
void add(linknode *aa,linknode *b);
void jian(linknode *aa,linknode *b);
void mult(linknode *aa,linknode *b);
void devide(linknode *aa);
double caculate(linknode *aa,double val);
};void list:: makeempty (linknode *first)
}void list:: input( linknode *first)
}void list::sort(linknode *first)
j=j->link;
}i=i->link;
}}void list::output( linknode *first)
else
else if(q->p!=1)
else if(q->p==1)
}q =q->link;
}if(cnt==0) cout<<"0"aj=j->link;
}if(f==0)
i=i->link;
}///
///i=b;///*i=b是錯誤寫法
while(i->link!=null)
j=j->link;
}if(f==0)
i=i->link;
}}void list::jian(linknode *aa,linknode *b)
j=j->link;
}if(f==0)
i=i->link;
}///
///i=b;///*i=b是錯誤寫法
while(i->link!=null)
j=j->link;
}if(f==0)
i=i->link;
}}void list::mult(linknode *aa,linknode *b)
i=i->link;
}linknode *temp=first->link;
sort(first);
//output(first);
while(temp!=null)
temp->link=tt->link;
}temp=tt->link;
}}void list::devide(linknode *aa)
return ans;
}int main()
// la.output(la.first);
// cout<>s;
if(s[0]=='x')
return 0;
else if(s[0]=='s')
else if(s[0]=='p')
else if(s[0]=='m')
else if(s[0]=='d')
else if(s[0]=='v')
else if(s[0]=='e')
}return 0;
}
資料結構 一元多項式
void initlist polynode l 初始化多項式單鏈表 int getlength polynode l 求多項式單鏈表的長度 polynode getelem polynode l,int i 返回多項式單鏈表中第i個結點的指標 polynode locate polynode l,...
資料結構 一元多項式相加
一元多項式相加 include include struct node typedef struct node polynomial 建立帶有表頭的鍊錶 poly用於儲存係數和指數 polynomial createpoly int poly,int len return head 銷毀鍊錶 voi...
資料結構 一元多項式加法
7 17 一元多項式的加法 20 分 設計程式求兩個一元多項式的和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數。數字間以空格分隔。輸出1行,以指數遞降方式輸出和多項式非零項的係數和指數 保證不超過整數的表示範圍 數字間以空格分隔,但結尾不能有多餘空格...