/*该程序利用散列的方式将两个稀疏多项式相乘后合并同类项*/
/*散列表的建立使用了分离链接法*/
#include <stdio.h>
#include <stdlib.h>
#define HASHMODULUS 11 //散列函數的模數
/*多项式的例程*/
typedef struct Node *polynomial;
typedef struct Node *position;
struct Node
{
int coefficient;
int power;
position next;
};
polynomial insert(int coefficient, int power, polynomial p); //插入元素到一个多项式
/*散列的例程*/
typedef unsigned int Index;
typedef struct hashTbl *hashTable;
struct hashTbl
{
int tableSize;
polynomial *theList; //一个数组
};
hashTable initialize(hashTable h);
Index hash(int power);
polynomial sortAndInsertToC(hashTable h, polynomial C);
int main()
{
polynomial A = NULL;
polynomial B = NULL;
polynomial C = NULL; //这个多项式是A和B的乘积结果
position firstOfA; //A的第一个节点
position firstOfB; //B的第一个节点
int tmpMulCoefficient; //多项式节点乘积的系数
int tmpMulPower; //多项式节点乘积的幂
Index hashValue; //乘积结果的散列值
hashTable h = NULL;
/*建立多项式A*/
A = insert(8, 999, A);
A = insert(8, 99, A);
A = insert(4, 7, A);
A = insert(3, 999, A);
A = insert(8, 500, A);
A = insert(4, 999, A);
A = insert
用散列表合并两个多项式乘积的同类项
最新推荐文章于 2021-10-09 11:47:58 发布
本文探讨如何利用散列表高效地合并两个多项式乘积中的同类项,通过建立键值映射,快速查找和合并相同指数的项,简化计算过程,提高计算速度。
摘要由CSDN通过智能技术生成