C语言一元多项式的相加

#include<stdio.h>
#include<malloc.h>

typedef struct Lnode{
 int data;

 int data1;

 struct Lnode *next;
}Lnode, *Linklist;

void create(Linklist &S, int n)
{
 S = (Linklist)malloc(sizeof(Lnode));

 S->next = NULL;

 int i;

 Linklist p,a;

 a = S;

 for(i = 0; i < n; i++)
 {
  p = (Linklist)malloc(sizeof(Lnode));

  printf("请依次输入系数指数:");

  scanf("%d%d", &p->data, &p->data1);

  p->next = NULL;

  a->next = p;

  a = p;
 }
}

void print(Linklist L)
{

 Linklist p;

 p = L->next;

 if(p == NULL)
 {
  printf("0\n");
 }

 while(p)
 {
        if(p->data == 0)
  {
   //printf("0");
  }
    
  else
   if(p->data == 1)
   {
    printf("X^%d", p->data1);
   }
   else
   {
    printf("%dX^%d", p->data, p->data1);
   }

   Linklist q;

   q = p;

  p = p->next;

  if(p != NULL && q->data != 0)
  {
   printf("+");
  }
 }

   printf("\n");
}

void add(Linklist List1, Linklist List2, Linklist &L)
{
 Linklist p1, p2, list, s;
 
 L = (Linklist)malloc(sizeof(Lnode));
 
 L->next = NULL;
 
 list = L;
 
 p1 = List1->next;
 
 p2 = List2->next;
 
 while (p1 && p2)
 {
  if (p1->data1 < p2->data1)
  {
   s = p1->next;
   
   list->next = p1;
   
   list = p1;
   
   list->next = NULL;
   
   p1 = s;
  }
  else if (p1->data1 == p2->data1)
  {
   p1->data = p1->data + p2->data;
   if (p1->data != 0)
   {
    list->next = p1;
    
    s = p1->next;
    
    list = p1;
    
    list->next = NULL;
    
    p1 = s;
    
    p2 = p2->next;
   }
   else
   {
    p1 = p1->next;
    
    p2 = p2->next;
   }
   
  }
  else
  {
   s = p2->next;
   
   list->next = p2;
   
   list = p2;
   
   list->next = NULL;
   
   p2 = s;
  }
 }
 if(p1 != NULL) list->next = p1;
 
 if(p2 != NULL) list->next = p2;
}

int main()
{
 Linklist a;
 
 Linklist b;
 
 Linklist c;

 int n;
 
 int n1;

 printf("请输入第一个多项式的项数:");

 scanf("%d", &n);

 create(a, n);
 
 printf("第一个多项式为:");

 print(a);
 
 printf("请输入第二个多项式的项数:");
 
 scanf("%d", &n1);
 
 create(b, n1);
 
 printf("第二个多项式为");
 
 print(b);
 
 add(a, b, c);
 
 printf("两式相加的结果为:");
 
 print(c);
 
 return 0;
}

猜你喜欢

转载自blog.csdn.net/chen1042246612/article/details/81153552