资源简介
用数据结构链表的知识实现多项式的加法,减法,乘法运算。包括相关源代码和设计报告。
代码片段和文件信息
#include
#include
#define OK 1
typedef struct PNode //定义多项式的链式存储结构
{
int coef;
int exp;
struct PNode *next;
}PNode*linkList;
typedef int Status;
//多项式的输入构建:
void creatPolyn(linkList &L)
{
linkList pq;
int ce;
q=L;
printf(“请输入多项式的各项系数和指数以100000结束(输完数据后按回车再输入两个100000):\n“);
do //用do...while循环实现用户对多项式的输入,用户输入数据完毕后敲回车再输入两个100000即可
{
scanf(“%d%d“&c&e);
if(c!=100000)
{
p=(linkList)malloc(sizeof(PNode));
p->coef=c;
p->exp=e;
q->next=p;
q=p;
}
}while(c!=100000);
p->next=NULL;
}
//将多项式各项按指数从高到底排列:
void Sort(linkList &L)
{
linkList pq;
int ij;
for(p=L->next;p->next!=NULL;p=p->next) //双重循环实现按指数由高到低排序:外层用于每次修改ij对应的值,为下次循环做准备
{
i=p->coef;
j=p->exp;
for(q=p->next;q!=NULL;q=q->next) //内层循环每次找出指数最大的项
{
if(q->exp>j)
{
i=q->coef;
j=q->exp;
}
}
if(p->exp!=j) //如果指数最大项的指数和当前项的指数不等,则将二者的值互换
{
for(q=p->next;q->exp!=j;q=q->next);
q->coef=p->coef;
q->exp=p->exp;
p->coef=i;
p->exp=j;
}
}
}
//合并多项式中的同类项,如果合并后系数为0删除此节点(基于多项式是有序的合并算法):
void Unite(linkList &L)
{
linkList pq;
p=L->next;
q=p->next;
while(q)
{
if(p->exp==q->exp) //若为同类项则系数相加,指针指向指数相同项的下一项(p->next=q->next)
{
p->coef=p->coef+q->coef;
p->next=q->next;
q=q->next;
}
else //不是同类项则只需指针后移
{
p=p->next;
q=q->next;
}
}
}
//用于输出刚建立的多项式:
Status Print1(linkList &L)
{
linkList pq;
int n=0;
printf(“\n“);
printf(“您输入的多项式的总项数为n=“);
for(p=L->next;p!=NULL;p=p->next)
n++;
printf(“%d“n);
printf(“\n“);
printf(“多项式建立完成,您输入的多项式为:\n“);
q=L->next;
printf(“%dx^%d“q->coefq->exp); //实现输出刚建立的多项式的第一项
for(p=q->next;p!=NULL;p=p->next) //实现输出刚建立的多项式的第二道最后一项
{
printf(“+“);
printf(“%dx^%d“p->coefp->exp);
}
printf(“\n“);
return OK;
}
//用于输出计算完成后的多项式
Status Print2(linkList &L)
{
linkList pq;
int n=0;
printf(“******************运算完成,计算结果为*******************:\n“);
printf(“\n“);
printf(“您的多项式运算结果的总项数为n=“);
for(p=L->next;p!=NULL;p=p->next)
n++;
printf(“%d“n);
printf(“\n“);
q=L->next;
printf(“%dx^%d“q->coefq->exp); //实现输出计算出的多项式的第一项
for(p=q->next;p!=NULL;p=p->next) //实现输出计算出的多项式的第二道最后一项
{
printf(“+“);
printf(“%dx^%d“p->coefp->exp);
}
printf(“\n“);
return OK;
}
//将建立好的两个多项式链表拷贝到一个链表中:为调用Sort和Unite函数实现加法运算做准备
linkList AddPolyn(linkList pa linkList pb)
{
linkList p1p2presb1;
p1=pa;b1=pb->next;
p=(linkList)malloc(sizeof(PNode));
p2=res=p;
while (p1->next!=NULL) //将建立好的第一个多项式拷贝到p中
{
p2->coef=p1->coef;
p2->exp=p1->exp;
p1=p1->next;
p=(linkList)malloc(sizeof(PNode));
p2->next=p;
p2=p2->next;
}
p2->coef=p1->coef;
p2->exp=p1->exp;
p=(linkList)malloc(sizeof(PNode));
p2->next=p;
p2=
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 376320 2010-06-20 21:48 多项式计算\多项式计算\数据结构-课程设计报告.doc
文件 9502 2010-06-17 17:01 多项式计算\多项式计算\数据结构-课程设计源代码.cpp
文件 43008 2010-06-20 21:46 多项式计算\多项式计算\课程设计任务书.doc
目录 0 2011-02-21 22:43 多项式计算\多项式计算
目录 0 2011-02-21 22:43 多项式计算
----------- --------- ---------- ----- ----
428830 5
- 上一篇:VRML 大红灯笼代码
- 下一篇:QT2048小游戏
评论
共有 条评论