数据结构一元多项式的代数运算1.课程设计目的:本设计的主要目的是设计一个一元多项式简单计算器.熟悉掌握一元多项式在链式存储结构上的实现,能够按照指数降序排列建立并输出多项式
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/01 05:00:32
![数据结构一元多项式的代数运算1.课程设计目的:本设计的主要目的是设计一个一元多项式简单计算器.熟悉掌握一元多项式在链式存储结构上的实现,能够按照指数降序排列建立并输出多项式](/uploads/image/z/6905866-58-6.jpg?t=%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%80%E5%85%83%E5%A4%9A%E9%A1%B9%E5%BC%8F%E7%9A%84%E4%BB%A3%E6%95%B0%E8%BF%90%E7%AE%971.%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1%E7%9B%AE%E7%9A%84%EF%BC%9A%E6%9C%AC%E8%AE%BE%E8%AE%A1%E7%9A%84%E4%B8%BB%E8%A6%81%E7%9B%AE%E7%9A%84%E6%98%AF%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E4%B8%80%E5%85%83%E5%A4%9A%E9%A1%B9%E5%BC%8F%E7%AE%80%E5%8D%95%E8%AE%A1%E7%AE%97%E5%99%A8.%E7%86%9F%E6%82%89%E6%8E%8C%E6%8F%A1%E4%B8%80%E5%85%83%E5%A4%9A%E9%A1%B9%E5%BC%8F%E5%9C%A8%E9%93%BE%E5%BC%8F%E5%AD%98%E5%82%A8%E7%BB%93%E6%9E%84%E4%B8%8A%E7%9A%84%E5%AE%9E%E7%8E%B0%2C%E8%83%BD%E5%A4%9F%E6%8C%89%E7%85%A7%E6%8C%87%E6%95%B0%E9%99%8D%E5%BA%8F%E6%8E%92%E5%88%97%E5%BB%BA%E7%AB%8B%E5%B9%B6%E8%BE%93%E5%87%BA%E5%A4%9A%E9%A1%B9%E5%BC%8F)
数据结构一元多项式的代数运算1.课程设计目的:本设计的主要目的是设计一个一元多项式简单计算器.熟悉掌握一元多项式在链式存储结构上的实现,能够按照指数降序排列建立并输出多项式
数据结构一元多项式的代数运算
1.课程设计目的:
本设计的主要目的是设计一个一元多项式简单计算器.熟悉掌握一元多项式在链式存储结构上的实现,能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加、相减,并将结果输出.体会链式存储结构的优缺点和适用性.
2.实验内容:
(1)输入并建立多项式;
(2)输出多项式,输出形式为整数序列:n,a,e1,c2,e2…,cn,en,其中n是多项式的项数,ci,ei分别是第i项的系数和指数,序列按指数降序排列;
(3)多项式a和b相加,建立多项式a+b;
(4)多项式a和b相减,建立多项式a-b.
数据结构一元多项式的代数运算1.课程设计目的:本设计的主要目的是设计一个一元多项式简单计算器.熟悉掌握一元多项式在链式存储结构上的实现,能够按照指数降序排列建立并输出多项式
//多项式相加(用单链表实现,用尾插法建表,用墨守成连线法求新的多项式)
#include
#include
typedef struct LNode //单链表的结构
{
int coef,exp;
struct LNode *next;
}LNode,*LinkList;
void InitList(LinkList &L) //单链表的初始化,数据输入
{
LinkList p,s;
L=(LinkList)malloc(sizeof(LNode));
if(!L)
exit(0);
L->next=NULL;
p=L;
do //用尾插法进行输入
{
s=(LinkList)malloc(sizeof(LNode));
scanf("%d%d",&s->coef,&s->exp);
p->next=s; //此处的连线有先后关系,因为如果先写第二个操作:L->next=s,
//则是先将第一个操作中的L->next变为了s,从而使赋值发生错误
if(s->next)
p=s;
}while(s->exp);
s->next=NULL;
}
int compare(int x,int y)
{
int flag;
if(x>y)
flag=1;
if(x==y)
flag=0;
if(xnext=NULL;
LinkList pa,pb,pc;
pa=La->next;
pb=Lb->next;
Lc=pc=La;
while(pa&&pb)
{
n=compare(pa->exp,pb->exp);
switch(n)
{
case 1:
pc->next=pa;
pc=pa;
pa=pa->next;
break;
case -1:
pc->next=pb;
pc=pb;
pb=pb->next;
break;
case 0:
pc->next=pa;
pc=pa;
pc->coef=pa->coef+pb->coef;
pa=pa->next;
pb=pb->next;
break;
}
}
pc->next=pa?pa:pb; //是其中一个线性表已结束的情况
free(Lb);
}
void print(LinkList &L)
{
LinkList p;
p=L->next;
while(p)
{
printf("+%d*x^%d",p->coef,p->exp);
p=p->next;
}
printf("\n");
}
void main()
{
LinkList L1,L2,L3;
printf("Please input L1(coef and exp):\n");
InitList(L1);
printf("L1=");
print(L1);
printf("Please input L2(coef and exp):\n");
InitList(L2);
printf("L2=");
print(L2);
Add(L1,L2,L3);
printf("The new list is:\n");
print(L3);
printf("\n");
}