case1:幂递增
多项式L1:5 + 2X2 + 4X3 + 6X5
多项式L2:X + 3X2 + 8X4 + 7X5 +X8
L1 + L2 = 5 + X + 5X2 + 4X3 + 8X4 + 13X5 + X8
case2:幂任意
多项式L1:3X3 + 4X2 + 5 + X6 - 2X5 - 6X4
多项式L2: -X + 5X3 + 2X2 + 5X6 - 3X5 + 6
L1 + L2 = 11 - X + 6X2 + 8X3 -6X4 -5X5 + 6X6
1.polylist.h
#ifndef _POLYLIST_H_
#define _POLYLIST_H_
typedef struct _ploynode_
{
int coef;
int exp;
struct _ploynode_ *next;
}polylist;
polylist * polylist_create();
void polylist_destroy(polylist *);
void polylist_clear(polylist *);
void polylist_insert(polylist *, int *);
void polylist_order_insert(polylist *, int *);
void polylist_union(polylist *,polylist *);
void polylist_display(polylist *);
#endif
3.main.c
#include <stdio.h>
#include "polylist.h"
int main()
{
polylist *L1 = NULL,*L2 = NULL;
//exponent is in order!
int a[][2] = {
{5, 0},{2,2},{4,3},{6,5}
};
int b[][2] = {
{1,1},{3,2},{8,4},{7,5},{1,8}
};
//exponent is in disorder!
int c[][2] = {
{5,0},{4,2},{3,3},{-6,4},{-2,5},{1,6}
};
int d[][2] = {
{6,0},{-1,1},{2,2},{5,3},{-3,5},{5,6}
};
int i;
//combination with exponent in order.
L1 = polylist_create();
L2 = polylist_create();
for(i=0; i < sizeof(a)/sizeof(int)/2; i++)
{
polylist_insert(L1,a[i]);
}
for(i=0; i < sizeof(b)/sizeof(int)/2; i++)
{
polylist_insert(L2,b[i]);
}
polylist_display(L1);
polylist_display(L2);
polylist_union(L1,L2);
polylist_display(L1);
polylist_destroy(L1);
//combination with exponent in disorder.
L1 = polylist_create();
L2 = polylist_create();
for(i=0; i < sizeof(c)/sizeof(int)/2; i++)
{
polylist_order_insert(L1,c[i]);
}
for(i=0; i < sizeof(d)/sizeof(int)/2; i++)
{
polylist_order_insert(L2,d[i]);
}
polylist_display(L1);
polylist_display(L2);
polylist_union(L1,L2);
polylist_display(L1);
polylist_destroy(L1);
return 0;
}
原文地址:点击打开链接