线性表的基本运算及多项式的算术运算
2015-10-10 20:56
393 查看
线性表的基本运算:
template<class T>
voidSeqList<T>::Reverse(){
T* t= new T[maxLength];
int j=0;
for (int i = 0; i < n; i++) //利用中间数组逆置
{
t[i] = elements[i];
}
for (int a = n; a>=0; a--)
{
elements[j++] = t[a-1];
}
}
template<class T>
bool SeqList<T>::DeleteX(constT &x){
int flag;
for(int i=0;i<n;i++){
if(elements[i]==x){
flag = 1;
Delete(i);
}
}
if(flag)
return true;
return false;
}
多项式的算术运算:
Polynomal operator*(Polynomal& A,Polynomal&B){
Term*pa,*pb,*pc;
intAL,BL,i,k,maxExp;
PolynomalC; //存储结果多项式
pc=C.getHead(); //结果多项式的尾指针
AL=A.maxOrder();
BL=B.maxOrder();
if(AL!=-1||BL!=-1) //相乘运算
{
maxExp=AL+BL; //结果最高项
float*result=new float[maxExp+1];
for(i = 0; i < maxExp; i++)
{
result[i]=0.0;
}
pa=A.getHead()->link;//多项式A遍历指针
while(pa!=NULL){
pb=B.getHead()->link; //多项式B遍历指针
while(pb!=NULL){
k=pa->exp+pb->exp;
result[k]=result[k]+pa->coef*pb->coef;
pb=pb->link;
}
pa=pa->link;
}
for(i = 0; i <= maxExp; i++)
if(fabs(result[i])>0.001)
pc=pc->InsertAfter(result[i],i);
delete[]result;
}
pc->link=NULL;
return C;
}
template<class T>
voidSeqList<T>::Reverse(){
T* t= new T[maxLength];
int j=0;
for (int i = 0; i < n; i++) //利用中间数组逆置
{
t[i] = elements[i];
}
for (int a = n; a>=0; a--)
{
elements[j++] = t[a-1];
}
}
template<class T>
bool SeqList<T>::DeleteX(constT &x){
int flag;
for(int i=0;i<n;i++){
if(elements[i]==x){
flag = 1;
Delete(i);
}
}
if(flag)
return true;
return false;
}
多项式的算术运算:
Polynomal operator*(Polynomal& A,Polynomal&B){
Term*pa,*pb,*pc;
intAL,BL,i,k,maxExp;
PolynomalC; //存储结果多项式
pc=C.getHead(); //结果多项式的尾指针
AL=A.maxOrder();
BL=B.maxOrder();
if(AL!=-1||BL!=-1) //相乘运算
{
maxExp=AL+BL; //结果最高项
float*result=new float[maxExp+1];
for(i = 0; i < maxExp; i++)
{
result[i]=0.0;
}
pa=A.getHead()->link;//多项式A遍历指针
while(pa!=NULL){
pb=B.getHead()->link; //多项式B遍历指针
while(pb!=NULL){
k=pa->exp+pb->exp;
result[k]=result[k]+pa->coef*pb->coef;
pb=pb->link;
}
pa=pa->link;
}
for(i = 0; i <= maxExp; i++)
if(fabs(result[i])>0.001)
pc=pc->InsertAfter(result[i],i);
delete[]result;
}
pc->link=NULL;
return C;
}
相关文章推荐
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- 数据结构之Treap详解
- JavaScript数据结构和算法之图和图算法
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- Java数据结构及算法实例:选择排序 Selection Sort
- Java数据结构及算法实例:朴素字符匹配 Brute Force
- Java数据结构及算法实例:汉诺塔问题 Hanoi
- Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)
- java数据结构和算法学习之汉诺塔示例
- Java数据结构及算法实例:三角数字
- Java数据结构之简单链表的定义与实现方法示例
- 数据结构之AVL树详解
- qqwry.dat的数据结构图文解释第1/2页
- JavaScript中数据结构与算法(五):经典KMP算法