多项式的加法 .c

来自「一个实现多项式加法的小程序」· C语言 代码 · 共 91 行

C
91
字号
#include<stdio.h>
#include<stdlib.h>

typedef struct polyn
{
	int xi_data;
	int zhi_data;
	struct polyn *next;
}polyn;

polyn *create()
{
    polyn *head,*p1,*p2;
	int n=0;
	head=NULL;
	p1=(polyn *)malloc(sizeof(polyn));
	scanf("%d%d",&p1->xi_data,&p1->zhi_data);
	while((p1->xi_data!=0)||(p1->zhi_data!=0))
	{
		n=n+1;
		if(n==1)
			head=p1;
		else
			p2->next=p1;
		p2=p1;
		p1=(polyn *)malloc(sizeof(polyn));
		scanf("%d%d",&p1->xi_data,&p1->zhi_data);
	}
	p2->next=NULL;
	return(head);
}
polyn *addpolyn(polyn *headfir,polyn *headsec)
{
	polyn *p1,*p2,*p3,*p4,*p5;
	int n=0;
	p2=headsec;
	do
	{
		p1=headfir;
		while(p2->zhi_data!=p1->zhi_data&&p1->next!=NULL)
		{p3=p1;p1=p1->next;}
		if(p2->zhi_data==p1->zhi_data)
			p1->xi_data+=p2->xi_data;
		else{
			for(;p1->next!=NULL;)
			{
				n+=1;
				if(n==1)p1=headfir;
				else{p5=p1;p1=p1->next;}
				if(p2->zhi_data<p1->zhi_data)
				{
					p4=(polyn *)malloc(sizeof(polyn));
					p4->zhi_data=p2->zhi_data;
					p4->xi_data=p2->xi_data;
					p5->next=p4;p4->next=p1;
				}
			}
			if(p1->next==NULL)
			{
				p4=(polyn *)malloc(sizeof(polyn));
				p4->zhi_data=p2->zhi_data;
				p4->xi_data=p2->xi_data;
				p4->next=NULL;p1->next=p4;
			}
		
		}p2=p2->next;
	}while(p2!=NULL);
 return(headfir);
}

void print(polyn *head)
{
	polyn *p;
	p=head;
	if(head!=NULL)
	do
	{printf("%4d%3d",p->xi_data,p->zhi_data);
		p=p->next;
	}while(p!=NULL);
	printf("\n");
}
void main()
{
	polyn *head,*head1,*head2;
	head1=create();
	head2=create();
	head=addpolyn(head1,head2);
	printf("The result is:\n");
	print(head);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?