您的位置:首页 > 其它

链表做的一元多项式表示及相加

2015-07-21 08:44 260 查看

#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

struct node

{

int num;

int f;

struct node *next;

};

typedef struct node *linklist;//结构体指针

void chu(linklist &head)//初始化

{

head=(linklist)malloc(sizeof(struct node));

head->next=NULL;

head->num=0;

head->f=0;

}

linklist in(linklist &p,int m,int n)//进链表

{

linklist s;

s=(linklist)malloc(sizeof(struct node));

s->num=m;

s->f=n;

s->next=p->next;

p->next=s;

return s;

}

void out(linklist &head)//出链表

{

linklist p=head->next;

while(p!=NULL)

{

printf("%dX^%d ",p->num,p->f);

p=p->next;

}

}

void sum(linklist &head1,linklist &head2,linklist head3)//计算和

{

linklist p1=head1->next,p2=head2->next,l1,l2,q=head3;

int a,b;

while(p1!=NULL&&p2!=NULL)

{

if(p1->f==p2->f)

{

a=p1->num+p2->num;

b=p1->f;

l1=p1;

l2=p2;

p1=p1->next;

p2=p2->next;

q=in(q,a,b);

}

else if(p1->f<p2->f)

{

a=p1->num;

b=p1->f;

p1=p1->next;

q=in(q,a,b);

}

else if(p1->f>p2->f)

{

a=p2->num;

b=p2->f;

p2=p2->next;

}

}

if(p1!=NULL) q->next=p1;

if(p2!=NULL) q->next=p2;

}

void dele(linklist head)

{

linklist p=head,q;

while(!p)

{

q=p;

free(q);

p=p->next;

}

}

main()

{ printf(" **********\n");

printf("一元多项式的指数请按照***递增***的顺序输入!\n");

printf(" **********\n");

int m,n,xi,zhi;

printf("请输入第一个一元多项式的项数,输入以后请按回车键\n");

scanf("%d",&m);

linklist head1;

chu(head1);

linklist p=head1;

printf("请先输入系数再输入指数,中间以空格键间隔\n");

for(int i=0;i<m;i++)

{

printf("请输入第一个一元多项式第%d项的系数,指数,输入以后请按回车键\n",i+1);

scanf("%d %d",&xi,&zhi);

p=in(p,xi,zhi);

}

printf("第一个一元多项式是:\n");

out(head1);

printf("\n");

printf("请输入第二个一元多项式的项数\n");

scanf("%d",&n);

linklist head2;

chu(head2);

linklist q=head2;

printf("请先输入系数再输入指数\n");

for(int i=0;i<n;i++)

{

printf("请输入第二个一元多项式第%d项的系数和指数,输入以后请按回车键\n",i+1);

scanf("%d %d",&xi,&zhi);

q=in(q,xi,zhi);

}

printf("第二个一元多项式是:\n");

out(head2);

printf("\n");

linklist head3;

chu(head3);

printf("合并后的一元多项式是:\n");

sum(head1,head2,head3);

dele(head1);

dele(head2);

out(head3);

}

如有更好的做法请多多指导!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: