#include <iostream>
#include <string.h>
using namespace std;
typedef struct Equation_Information{
int *num; //系数;
int *exponent; //指数;
int length;
}Equation;
typedef struct Equations{
int exponent;
Equation *E;
}Equations;
int List_Init(Equation &E);
int List_Insert(Equation &E,int num,int exponent,int index); //传统插入
int List_Insert(Equation &E,int num,int exponent); //智能插入
int List_Delete(Equation &E,int index);
int List_Append(Equation &E,int num,int exponent);
int List_Summation(Equation &E1,Equation &E2,Equation &E3);
int List_Sort(Equation &E);
int List_Display(Equation E);
int main()
{
Equation E1;
Equation E2;
Equation E3;
List_Init(E1);
List_Init(E2);
List_Append(E1,1,1);
List_Append(E1,1,2);
//List_Append(E1,1,3);
//List_Append(E1,1,4);
List_Append(E1,1,5);
List_Append(E2,1,1);
List_Append(E2,1,2);
List_Append(E2,1,3);
//List_Append(E2,1,4);
//List_Append(E2,1,5);
//List_Append(E2,1,6);
List_Summation(E1,E2,E3);
List_Display(E1);
return 0;
}
int List_Summation(Equation &E1,Equation &E2,Equation &E3){
int sum_Max = max(E1.length,E2.length);//指数叠加
int i=0;
int j=0;
int k=0;
//01 05 06 07 08 E1 i
//01 02 06 07 08 E2 j
while(1){
if(E1.exponent[i]>E2.exponent[j]){
List_Append(E1,E2.num[j],E2.exponent[j]);
j++;
}else if(E1.exponent[i]==E2.exponent[j]){
E1.num[i] += E2.num[j];
i++;
j++;
}else if(E1.exponent[i]<E2.exponent[j]){
i++;
}
if(j==E2.length){break;}
}
List_Sort(E1);
}
int List_Init(Equation &E){
E.num = new int [20];
E.exponent = new int [20];
E.length = 0;
}
int List_Insert(Equation &E,int num,int exponent,int index){ //传统插入
E.length++;
for(int i=E.length;i>index;i--){
;
}
}
int List_Insert(Equation &E,int num,int exponent){
E.length++;
}
int List_Append(Equation &E,int num,int exponent){
E.num[E.length] = num;
E.exponent[E.length] = exponent;
E.length++;
}
/*=============增删改查结束==================*/
int List_Display(Equation E){
for(int i=0;i<E.length;i++){
if(E.num[i]>=0&&i!=0) cout<<" + ";
cout<<E.num[i]<<"x"<<"^"<<E.exponent[i];
}
}
int List_Sort(Equation &E){
int var_exponent;
int var_num;
for(int i=0;i<E.length;i++){
for(int j=i+1;j<E.length;j++){
if(E.exponent[i]>E.exponent[j]){
var_exponent = E.exponent[i];
E.exponent[i] = E.exponent[j];
E.exponent[j] = var_exponent;
var_num = E.num[i];
E.num[i] = E.num[j];
E.num[j] = var_num;
}
}
}
}