一元稀疏多项式相加
实验原理
通过链表存储多项式的系数和指数。对于指数并不是按照从低到高排列的多项式,通过冒泡排序的思想将指数从低到高排序,构成有序的多项式链表。在计算多项式加法的时候,通过定义一个新的链表用于存储相加之后的多项式,然后定义两个分别指向两个待加链表首元的指针,比较两个指针指向的指数域的大小关系,进行结点之间的交换、相加等链表操作,所有操作结束后,返回新的链表,及相加后的多项式,并用循环语句输出新链表各结点的系数域和指数域,程序结束。
代码实现
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define TRUE 1
#define ERROR 0
#define FALSE 0
#define OVERFLOW -1
typedef struct LNode {
float coef; //系数
int expn; //指数
struct LNode* next;
}LNode, * Polynomail; //多项式
typedef int Status;
Polynomail InitPolyn() {
Polynomail P = (Polynomail)malloc(sizeof(LNode));
if (!P) {
printf("\n内存分配失败\n");exit(OVERFLOW); }
P->next = NULL;
return P;
}
Status CreatPolyn(Polynomail P, int m) {
float a = 0.0;
int b = 0;
LNode* Q = NULL;
Q = P;
for (int i = 0;i < m;i++) {
printf("\n请输入第%d项元素的系数和指数(eg:2 3):", i + 1);
scanf_s("%f %d", &a, &b);
LNode* new = (LNode*)malloc(sizeof(LNode