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

📄 sy2_3.c

📁 数据结构实验与学习指导
💻 C
字号:
/* 两个多项式链表相加sy2_3.c */
#include"sj.h"
#include<alloc.h>
typedef struct polynode              /*定义多项式结构*/
{int coef;  
 int exp; 
 struct polynode *next;         /*指针域 */
}PNode;
PNode creat_list(int n)              /* 创建链式表 */
  { PNode *p,*head,*s;
    int i;
  head=(PNode *)malloc(sizeof(PNode));
  p=head;
  for(i=1;i<=n;i++)
    {s=(PNode *)malloc(sizeof(PNode));
     scanf("%d,%d",&s->coef,&s->exp);
     s->next=NULL;
     p->next=s;
     p=s;
   }
   return (*head);
}/* creat_list */
void print(PNode *H)                          /* 输出结果 */
{PNode *p=H->next;
   while(p->next)
     {printf("%dx^%d+",p->coef,p->exp);
      p=p->next; }
      if(p->exp)   printf("%dx^%d\n",p->coef,p->exp);
      else  printf("%d\n",p->coef);
}/* print */
void ployadd(PNode *pa,PNode *pb)               /*多项式相加操作*/
{ PNode *qa,*qb,*q,*pre;int sum;
   pre=pa;
   qa=pa->next;qb=pb->next;
   while(qa&&qb)
    { if(qa->exp==qb->exp)                       /*指数相等*/
      { sum=qa->coef+qb->coef;
        if(sum)  { qa->coef=sum;pre=qa; }     /*所求系数不为0*/
        else
        { pre->next=qa->next;free(qa);}
          qa=pre->next;
          q=qb;qb=qb->next;free(q);
        }
     else                                           /*指数不相等*/
     { if(qa->exp>qb->exp)
        { pre=qa; qa=qa->next; }
          else{ pre->next=qb;
          pre=qb;
          qb=qb->next;
          pre->next=qa;}
     }
}
  if(qb) pre->next=qb;
  free(pb);
  }/* ployadd */
 void main()
{PNode *HA,*HB;
   int la,lb;
   printf("输入两个多项式的项数:");   /* 输入多项式长度 */
   scanf("%d,%d",&la,&lb);
   printf("多项式A(X)的创建,输入格式为:coef,exp:\n");
   *HA=creat_list(la);
   printf("多项式B(X)的创建,输入格式为:coef,exp:\n");
  *HB=creat_list(lb);
   printf("A(X)=");
   print(HA);
   printf("B(X)=");
   print(HB);
   ployadd(HA,HB);
   printf("相加结果A(X)+B(X)=");
   print(HA);
   getch();
}

⌨️ 快捷键说明

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