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

📄 test.cpp

📁 两个多项式相加操作演示程序
💻 CPP
字号:
 #include<stdio.h>
 #include<stdlib.h>

  struct Data{
     float coef;
	 int exp;
 };

 typedef struct Poly{
	 Data data;
	 struct Poly *next;
 }Poly1,*Ppoly;

 int locate(Ppoly L,int e){
	 Ppoly q;
	 q=L;
	 while(q){
		 if(q->data.exp==e) return 1;
		 else q=q->next;
	 }
	 return 0;
 }

 void insert(Ppoly L,Data e){
	 Ppoly p,q;
	 p=L;
	 Ppoly a;
	 a=new Poly1;
	 while(p){
		 if(p->data.exp<e.exp) {q=p;p=p->next;}
		 else break;
	 }
	 a->data=e;
	 a->next=q->next;
	 q->next=a;
 }
 
 void create(Ppoly &L){
	 Ppoly p;
	 p=new Poly1;
     p->data.coef=1.0;
	 p->data.exp=-1;
	 p->next=NULL;
	 L=p;
	 Data d;
	 scanf("%f %d",&d.coef,&d.exp);
	 while(d.exp!=-1){
		 if(!locate(L,d.exp)) insert(L,d);
		 scanf("%f %d",&d.coef,&d.exp);
	 }
 }

 void print(Ppoly L){
	 Ppoly p;
	 p=L->next;
	 printf("你所输入的多项式为:");
	 if(p) { if(p->data.coef!=0) printf("%fx^%d",p->data.coef,p->data.exp);p=p->next;}
	 while(p){
		 float m;
		 m=p->data.coef;
		 if(m<0) printf("%fx^%d",p->data.coef,p->data.exp);
		 else if(m>0) printf("+%fx^%d",p->data.coef,p->data.exp);
		 p=p->next;
	 }
	 printf("\n");
 }
	
 void add(Ppoly L1,Ppoly L2){
	 Ppoly p1=L1->next,p2=L2->next;
	 int i;
	 if(!p1){
		 if(!p2) printf("两个0项的多项式相加为0!\n");
		 else print(L2);
	 }
	 else if(!p2){
		 if(!p1) printf("两个0项的多项式相加为0!\n");
		 else print(L1);
	 }
	 else{
		 while(p2){
			 while(p1){
                 if(p2->data.exp==p1->data.exp) {i=1;break;}
				 else {p1=p1->next;i=0;}
			 }
			 if(i==0) insert(L1,p2->data);
			 else if(i==1) p1->data.coef+=p2->data.coef;
			 p1=L1;
			 p2=p2->next;
		 }
	 }
 }

 void main(){
	 Ppoly q1,q2;
	 printf("请依次输入第一个多项式的系数和指数:(以指数为-1做结束)\n");
	 create(q1);
	 print(q1);
	 printf("请依次输入第二个多项式的系数和指数:(以指数为-1做结束)\n");
	 create(q2);
	 print(q2);
	 add(q1,q2);
	 printf("相加后的多项式是:");
	 print(q1);
 }
	 

⌨️ 快捷键说明

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