博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多项式相加
阅读量:6811 次
发布时间:2019-06-26

本文共 1606 字,大约阅读时间需要 5 分钟。

#include <stdio.h>

#include <malloc.h>
#define NULL 0
struct node
{
 int a,n;
 struct node *next;
};
struct node *creat()
{
 int a,n;
 struct node *p1,*p2,*head;
 head=NULL;
 scanf("%d%d",&a,&n);
 p2=NULL;
 while(a)
 {
  p1=(struct node *) malloc(sizeof(struct node));
  p1->a=a;
  p1->n=n;
  p1->next=NULL;
  if(head==NULL)
  {
   head=p1;p2=p1;
  }  
        else
        {
         p2->next=p1;
   p2=p1;
        }
        scanf("%d%d",&a,&n);
 }
 return head;
}

struct node *add(struct node *head1,struct node *head2)

{
 int a,n;
 struct node *p1=head1,*p2=head2,*head,*p3,*p4,*p;
 head=NULL;
 while(p1 && p2)
 {
  if(p1->n==p2->n)
  {
   a=p1->a+p2->a;
   n=p1->n;
   p1=p1->next;
   p2=p2->next;
  } 
  else
  {
   if(p1->n>p2->n)
   {
    a=p1->a;n=p1->n;
    p1=p1->next;
   }
   else
   {
    a=p2->a;n=p2->n;
    p2=p2->next;
   }
  }
  if(a)
  {
   p3=(struct node *)malloc(sizeof(struct node));
   p3->a=a;
   p3->n=n;
   p3->next=NULL;
   if(head==NULL)
   {
    head=p3;p4=p3;
   }
   else
   {
    p4->next=p3;
    p4=p3;
   }
  }
 }
 p=p1?p1:p2;
 while(p)
 {
  p3=(struct node *)malloc(sizeof(struct node));
  p3->a=p->a;
  p3->n=p->n;
  p3->next=NULL;
  if(head==NULL)
  {
   head=p3;p4=p3;
  }
  else
  {
   p4->next=p3;
   p4=p3;
  }
  p=p->next;
 }
 return head;
}

void print(struct node *head)

{
 struct node *p1=head;
 if(head==NULL)
 {  printf("此多项式不存在\n");
       return ;
    }
 printf("\n");
 if(p1)
 {
          printf("%dx%d",p1->a,p1->n);
          p1=p1->next;
    }
 while(p1)
 {
  if(p1->a>0)
     printf("+");
        if(p1->n==0)
          printf("%d",p1->a);
        else
          if(p1->a==1)
            printf("x%d",p1->n);
          else
      printf("%dx%d",p1->a,p1->n);
  p1=p1->next;
 }
 printf("\n");
}

int main()

{
 struct node *head1,*head2,*head3;
 head1=creat();
 head2=creat();
 print(head1);
 print(head2);
 head3=add(head1,head2);
 print(head3);
}

转载于:https://www.cnblogs.com/wc1903036673/p/3405955.html

你可能感兴趣的文章
我的第一个Chrome扩展
查看>>
线偏移处理参数说明
查看>>
Web Services Introduction
查看>>
快速排序算法之所有版本的c/c++实现
查看>>
linux进程的休眠(等待队列)【转】
查看>>
Git学习系列之Git基本操作克隆项目(图文详解)
查看>>
Makefile学习之make 的运行【转】
查看>>
今天有点爽
查看>>
QTP的那些事--场景恢复的使用(加入场景恢复却不起作用)
查看>>
Asp.net MVC 2 使用Areas功能的常见错误
查看>>
linux系统性能分析
查看>>
《PHP对象、模式与实践》之对象
查看>>
ASP.NET入门五步详解
查看>>
树莓派 + Docker - 轻松实现人脸识别应用
查看>>
idoc 和 bapi 和 rfc 之间的区别
查看>>
浅析ASP.NET应用ViewState技术
查看>>
递归、非递归 反转单链表
查看>>
36.9. Round Robin Archives
查看>>
在word软件中使用MathType自动编号功能
查看>>
最小公约数(欧几里得算法&amp;&amp;stein算法)
查看>>