⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 多项式.cpp

📁 数据结构上机实习关于多项式的源程序!是我同学编的!
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
typedef struct LNode
{
	int data;
	int exp;
	struct LNode *next;
}SqList;
void Sort(SqList *&l)
{
	SqList *p=l->next,*q,*r;
	if(p!=NULL)
	{
		r=p->next;
		p->next=NULL;
		p=r;
		while(p!=NULL)
		{
			r=p->next;
			q=l;
			while(q->next!=NULL&&q->next->exp<p->exp)
				q=q->next;
			p->next=q->next;
			q->next=p;
			p=r;
		}
	}
	 p=l->next;
	while(p!=NULL)
	{
		if(p==l->next)
		   printf("%dx^%d",p->data,p->exp);
		else if(p->data>0)
			printf("+%dx^%d",p->data,p->exp);
		else
			printf("%dx^%d",p->data,p->exp);
		p=p->next;
	}
	printf("\n");
}
void Bulid(SqList *&l,int x)
{
     SqList *p,*q;
	 int n=0,i;
	 l=(SqList*)malloc(sizeof(SqList));
	 l->next=NULL;
	 p=l;
     printf("请输入第%d个多项式\n",x);
	 printf("请输入多项式的项数:");
	 scanf("%d",&n);
	 printf("请输入多项式:\n");
	 for(i=0;i<n;i++)
     {
        q=(SqList*)malloc(sizeof(SqList));
		scanf("%d %d",&q->data,&q->exp);
        q->next=p->next;
		p->next=q;
		p=q;
	 }
	 p=l->next;
	while(p!=NULL)
	{
		if(p==l->next)
		   printf("%dx^%d",p->data,p->exp);
		else if(p->data>0)
			printf("+%dx^%d",p->data,p->exp);
		else
			printf("%dx^%d",p->data,p->exp);
		p=p->next;
	}
	printf("\n");
	 Sort(l);
}

void Add(SqList *head1,SqList *head2,SqList *&head)
{
	SqList *p,*q,*r,*s;
	head=(SqList*)malloc(sizeof(SqList));
	head->next=NULL;
	p=head1->next;
	q=head2->next;
	r=head;
	while(p!=NULL&&q!=NULL)
    {   
		if(p->exp<q->exp)
		{
			s=(SqList*)malloc(sizeof(SqList));
			s->exp=p->exp;
			s->data=p->data;
        	p=p->next;
		    r->next=s;
			r=s;
        }
		else if(p->exp==q->exp)
		{
			if(p->data+q->data!=0)
			{
				s=(SqList*)malloc(sizeof(SqList));
				s->exp=p->exp;
			    s->data=p->data+q->data;
                r->next=s;
			    r=s;
			}
            p=p->next;
			q=q->next;
		}
		else 
		{
			s=(SqList*)malloc(sizeof(SqList));
			s->exp=q->exp;
			s->data=q->data;
			q=q->next;
		    r->next=s;
			r=s;
		}

	}
	if(p==NULL)
		while(q!=NULL)
		{
			s=(SqList*)malloc(sizeof(SqList));
			s->data=q->data;
			s->exp=q->exp;
			s->next=r->next;
			r->next=s;
			r=s;
			q=q->next;

		}
    else
        	while(p!=NULL)
		{
			s=(SqList*)malloc(sizeof(SqList));
			s->data=p->data;
			s->exp=p->exp;
			s->next=r->next;
			r->next=s;
			r=s;
			p=p->next;

		}
			r->next=NULL;
}
void main()
{
	SqList *head1,*head2,*head;
	SqList *p;
	Bulid(head1,1);
	Bulid(head2,2);
	Add(head1,head2,head);
	p=head1->next;
	printf("第一个多项式为:\n");
	while(p!=NULL)
	{
		if(p==head1->next)
		   printf("%dx^%d",p->data,p->exp);
		else if(p->data>0)
			printf("+%dx^%d",p->data,p->exp);
		else
			printf("%dx^%d",p->data,p->exp);
		p=p->next;
	}
	printf("\n");
	p=head2->next;
    printf("第二个多项式为:\n");
	while(p!=NULL)
	{
		if(p==head2->next)
		   printf("%dx^%d",p->data,p->exp);
		else if(p->data>0)
			printf("+%dx^%d",p->data,p->exp);
		else
			printf("%dx^%d",p->data,p->exp);
		p=p->next;
	}
	printf("\n");
	p=head->next;
	printf("结果为:\n");
	while(p!=NULL)
	{
		if(p==head->next)
		   printf("%dx^%d",p->data,p->exp);
		else if(p->data>0)
			printf("+%dx^%d",p->data,p->exp);
		else
			printf("%dx^%d",p->data,p->exp);
		p=p->next;
	}
	printf("\n");

}

⌨️ 快捷键说明

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