• 大小: 206KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: 其他
  • 标签:

资源简介

用数据结构链表的知识实现多项式的加法,减法,乘法运算。包括相关源代码和设计报告。

资源截图

代码片段和文件信息

#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


评论

共有 条评论

相关资源