数据结构课程设计一元多项式计算器Word格式.docx

上传人:b****5 文档编号:20649434 上传时间:2023-01-24 格式:DOCX 页数:14 大小:174.16KB
下载 相关 举报
数据结构课程设计一元多项式计算器Word格式.docx_第1页
第1页 / 共14页
数据结构课程设计一元多项式计算器Word格式.docx_第2页
第2页 / 共14页
数据结构课程设计一元多项式计算器Word格式.docx_第3页
第3页 / 共14页
数据结构课程设计一元多项式计算器Word格式.docx_第4页
第4页 / 共14页
数据结构课程设计一元多项式计算器Word格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

数据结构课程设计一元多项式计算器Word格式.docx

《数据结构课程设计一元多项式计算器Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计一元多项式计算器Word格式.docx(14页珍藏版)》请在冰豆网上搜索。

数据结构课程设计一元多项式计算器Word格式.docx

D={ai|ai∈Termset,i=1,2,3·

,m,m≥0Termset中的每个元素包含一个表示系数的实数和表示指数的整数}

数据关系:

R1={<

ai-1,ai>

ai-1,ai∈D,且ai-1中的指数<

ai中的指数的值,i=1,2,3·

n}

基本操作:

Insert(p,h)

初始条件:

h已存在。

操作结果:

插入p项。

CreateLinklist(head,m)

建立一个头指针为head、项数为m的一元多项式。

DestroyLinklist(p)

一元多项式p已存在。

销毁一元多项式p。

PrintLinklist(P)

输出一元多项式p。

Compare(a,b)

项a,b已存在。

比较a,b中x的指数的大小。

AddLinklist(pa,pb)

一元多项式pa,pb已存在。

完成一元多项式pa,pb的相加运算。

SubtractionLinklist(Sa,Sb)

一元多项式Sa,Sb已存在。

完成一元多项式Sa,Sb的相减运算。

}ATDPloynomial

三、详细设计(源代码)

(使用C语言)

#include<

stdio.h>

malloc.h>

#definemaxlen10

#definelarge999

typedefstructLinklistomial

{

floatcoef;

intexpn;

structLinklistomial*next;

}Linklistomial,*Linklist;

//结点类型,指针类型

voidInsert(Linklistp,Linklisth)

{//h已存在插入p项

if(p->

coef==0)

free(p);

//系数为0的话释放结点

else

{

Linklistq1,q2;

q1=h;

q2=h->

next;

while(q2&

&

p->

expn<

q2->

expn)

{//查找插入位置

q1=q2;

q2=q2->

}

if(q2&

expn==q2->

{//将指数相同相合并

q2->

coef+=p->

coef;

if(!

coef)

{//系数为0的话释放结点

q1->

next=q2->

free(q2);

else{//指数为新时将结点插入

p->

next=q2;

next=p;

}

LinklistCreateLinklist(Linklisthead,intm)

{//建立一个头指针为head、项数为m的一元多项式

inti;

Linklistp;

p=head=(Linklist)malloc(sizeof(structLinklistomial));

head->

next=NULL;

for(i=0;

i<

m;

i++)

p=(Linklist)malloc(sizeof(structLinklistomial));

//建立新结点以接收数据

printf("

请输入第%d项的系数与指数:

"

i+1);

scanf("

%f%d"

&

coef,&

expn);

Insert(p,head);

//调用Insert函数插入结点

returnhead;

voidDestroyLinklist(Linklistp)

{//销毁多项式p

LinklistD1,D2;

D1=p;

while(D1)

D2=D1->

free(D1);

D1=D2;

voidPrintLinklist(LinklistP)

{//输出一元多项式p

Linklistq=P->

intflag=1;

//项数计数器

q)

{//若多项式为空,输出0

putchar('

0'

);

\n"

return;

while(q)

if(q->

coef>

0&

flag!

=1)putchar('

+'

//系数大于0且不是第一项

coef!

=1&

q->

=-1)

{//系数非1或-1的普通情况

%g"

q->

coef);

expn==1)putchar('

X'

elseif(q->

expn)printf("

X^%d"

coef==1)

1'

expn==1)

coef==-1)

-1"

-X"

-X^%d"

q=q->

flag++;

intCompare(Linklista,Linklistb)

{//比较a,b中x的指数的大小

if(a&

b)

b||a->

expn>

b->

return1;

elseif(!

a||a->

return-1;

return0;

a&

b)//a多项式已空,但b多项式非空

else//b多项式已空,但a多项式非空

LinklistAddLinklist(Linklistpa,Linklistpb)

{//求解并建立多项式a+b,返回其头指针

Linklistqa=pa->

Linklistqb=pb->

Linklistheadc,hc,qc;

hc=(Linklist)malloc(sizeof(structLinklistomial));

//建立头结点

hc->

headc=hc;

while(qa||qb)

qc=(Linklist)malloc(sizeof(structLinklistomial));

switch(Compare(qa,qb))

case1:

qc->

coef=qa->

expn=qa->

expn;

qa=qa->

break;

case0:

coef+qb->

qb=qb->

case-1:

coef=qb->

expn=qb->

if(qc->

=0)

next=hc->

next=qc;

hc=qc;

free(qc);

//当相加系数为0时,释放该结点

returnheadc;

LinklistSubtractionLinklist(LinklistSa,LinklistSb)

{//求解并建立多项式a-b,返回其头指针

LinklistCb=Sb->

while(Cb)

Cb->

coef=(-1)*Cb->

Cb=Cb->

returnAddLinklist(Sa,Sb);

intmain()

intm,n,a=1;

charflag;

Linklistpa=0,pb=0,pc;

欢迎使用一元多项式加法器\n\n"

//输出菜单

*******************************************************\n"

*一元多项式简单运算器*\n"

**\n"

*A:

输入多项式aB:

输入多项式b*\n"

*C:

输出多项式aD:

输出多项式b*\n"

*E:

输出a+bF:

输出a-b*\n"

*G:

使用完毕!

*\n"

while(a)

\n请选择操作:

%c"

flag);

//空格符号一定要注意

switch(flag)

case'

A'

:

a'

下面进行多项式a的输入:

请输入a的项数:

%d"

m);

pa=CreateLinklist(pa,m);

//建立多项式a

B'

b'

下面进行多项式b的输入:

请输入b的项数:

n);

pb=CreateLinklist(pb,n);

//建立多项式b

C'

c'

\n多项式a="

PrintLinklist(pa);

D'

d'

\n多项式b="

PrintLinklist(pb);

E'

e'

pc=AddLinklist(pa,pb);

\na+b="

PrintLinklist(pc);

F'

f'

pc=SubtractionLinklist(pa,pb);

\na-b="

G'

g'

DestroyLinklist(pa);

DestroyLinklist(pb);

a=0;

\n欢迎下次使用!

default:

\n您的选择错误,请重新选择!

四、调试分析

编译环境为CodeBlocks。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1