线性表链表案例之多项式加法
线性表实现多项式加法

#include <iostream>
#define OK 1
#define ERROR 0
#define MAXSIZE 100
using namespace std;
typedef int Status;
typedef struct{
int exponent;
int base;
}ElemType;
typedef struct
{
ElemType *elem;
int length;
}SqList;
Status init(SqList &L){
L.elem=new ElemType[MAXSIZE];
if(!L.elem) return ERROR;
L.length=0;
return OK;
}
void createSqlist(SqList &L,int n){
init(L);
while(n>0){
printf("请输入底数:\n");
cin>>L.elem[L.length].base;
printf("请输入指数:\n");
cin>>L.elem[L.length++].exponent;
n--;
}
}
void selectAll(SqList L){
for(int i=0;i<L.length;i++){
if(i==L.length-1){
printf("%dX^%d",L.elem[i].base,L.elem[i].exponent);
}else{
printf("%dX^%d+",L.elem[i].base,L.elem[i].exponent);
}
}
}
SqList add(SqList L1,SqList L2){
int p1=0;int p2=0;
SqList R;
R.elem=new ElemType[L1.length+L2.length];
R.length=0;
while(p1<L1.length&&p2<L2.length){
if(L1.elem[p1].exponent==L2.elem[p2].exponent){
int result=L1.elem[p1].base+L2.elem[p2].base;
if(result!=0){
R.elem[R.length].base=result;
R.elem[R.length++].exponent=L1.elem[p1].exponent;
}
p1++;
p2++;
}else{
if(L1.elem[p1].exponent<L2.elem[p2].exponent){
R.