数据结构多项式相加代码
多项式可以使用数组或链表来存储。其中,每个元素都代表一个项,包含系数和指数两个元素。
假设有两个多项式A和B,它们的项数分别为m和n。
以下是使用数组实现多项式相加的代码:
1. 定义结构体表示多项式项,包含系数和指数两个元素。
struct PolyItem {
int coefficient; // 系数
int exponent; // 指数
};
2. 定义结构体表示多项式,包含项数和项的数组。
struct Polynomial {
int numItems; // 项数
PolyItem* items; // 项的数组
};
3. 定义函数实现多项式相加。
Polynomial add(Polynomial a, Polynomial b) {
Polynomial c; // 存储结果的多项式
数组和链表 c.numItems = 0; // 初始化项数为0
c.items = new PolyItem[a.numItems + b.numItems]; // 申请空间存储项
int i = 0, j = 0, k = 0; // 分别表示a、b、c的下标
while (i < a.numItems && j < b.numItems) { // 当a和b都还有项时
if (a.items[i].exponent > b.items[j].exponent) { // 当a的指数大于b的指数时
c.items[k++] = a.items[i++]; // 将a的项复制到c中
} else if (a.items[i].exponent < b.items[j].exponent) { // 当a的指数小于b的指数时
c.items[k++] = b.items[j++]; // 将b的项复制到c中
} else { // 当a和b的指数相等时
c.items[k].exponent = a.items[i].exponent; // 将指数赋值给c
c.items[k++].coefficient = a.items[i++].coefficient + b.items[j++].coefficient; // 将系数相加后赋值给c
}
}
// 将a或b剩余的项复制到c中
while (i < a.numItems) {
c.items[k++] = a.items[i++];
}
while (j < b.numItems) {
c.items[k++] = b.items[j++];
}
c.numItems = k; // 将项数赋值给c
return c; // 返回结果多项式
}
4. 调用add函数实现多项式相加。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论