案例2.1-一元多项式的运算(顺序表实现)
# include <iostream>
# include <string>
using namespace std;
# define MAX 20
typedef struct
{
double coef;
int exp;
} polyarray[ MAX] ;
typedef struct
{
polyarray* data;
int length;
} SqList;
void create ( SqList& L, polyarray a, int n)
{
L. data = new polyarray[ 20 ] ;
L. length = 0 ;
for ( int i = 0 ; i < n; i++ )
{
L. data[ i] -> coef = a[ i] . coef;
L. data[ i] -> exp = a[ i] . exp;
L. length++ ;
}
}
void show ( SqList& L)
{
cout << "系数:" ;
for ( int i = 0 ; i < L. length; i++ )
{
cout << L. data[ i] -> coef << " " ;
}
cout << endl;
cout << "指数:" ;
for ( int i = 0 ; i < L. length; i++ )
{
cout<< L. data[ i] -> exp << " " ;
}
cout << endl;
cout << "元素个数为:" << L. length << endl;
}
void add ( SqList& result_L, SqList& L1, SqList& L2)
{
result_L. data = new polyarray[ 20 ] ;
result_L. length = 0 ;
int num1 = L1. length;
int num2 = L2. length;
if ( num1 > num2)
{
result_L. length = num1;
for ( int i = 0 ; i < num2; i++ )
{
result_L. data[ i] -> coef = L1. data[ i] -> coef + L2. data[ i] -> coef;
result_L. data[ i] -> exp = L1. data[ i] -> exp;
}
for ( int j = num2; j < num1; j++ )
{
result_L. data[ j] -> coef = L1. data[ j] -> coef;
result_L. data[ j] -> exp = L1. data[ j] -> exp;
}
}
else if ( num1 < num2)
{
result_L. length = num2;
for ( int i = 0 ; i < num1; i++ )
{
result_L. data[ i] -> coef = L1. data[ i] -> coef + L2. data[ i] -> coef;
result_L. data[ i] -> exp = L1. data[ i] -> exp;
}
for ( int j = num1; j < num2; j++ )
{
result_L. data[ j] -> coef = L2. data[ j] -> coef;
result_L. data[ j] -> exp = L2. data[ j] -> exp;
}
}
else
{
result_L. length = num1;
for ( int i = 0 ; i < num1; i++ )
{
result_L. data[ i] -> coef = L1. data[ i] -> coef + L2. data[ i] -> coef;
result_L. data[ i] -> exp = L1. data[ i] -> exp;
}
}
cout << "结果线性表的元素个数:" << result_L. length << endl;
}
int main ( )
{
polyarray a = { { 10 , 0 } , { 5 , 1 } , { - 4 , 2 } , { 3 , 3 } , { 2 , 4 } } ;
SqList L1;
create ( L1, a, 5 ) ;
show ( L1) ;
polyarray b = { { - 3 , 0 } , { 8 , 1 } , { 4 , 2 } , { 0 , 3 } , { - 5 , 4 } , { 7 , 5 } , { - 2 , 6 } } ;
SqList L2;
create ( L2, b, 7 ) ;
show ( L2) ;
cout << string ( 50 , '-' ) << endl;
SqList result_L;
add ( result_L, L1, L2) ;
show ( result_L) ;
delete result_L. data;
delete L1. data;
delete L2. data;
system ( "pause" ) ;
return 0 ;
}
运行结果