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

📄 一元多项式的建立输出和相加的函数建立.c

📁 一元多项式的建立输出和相加的函数建立 一元多项式的建立输出和相加的函数建立
💻 C
字号:
typedef struct  LNode
{  /*多项式的存储结构定义*/
    int coef;
    int expn;
    struct LNode *next;
}LNode,*linklist;

linklist creat()
{   /*一元多项式以链表存储形式的建立*/
  linklist head,s,p,pre;
  int coef;
  int expn;
  head=(linklist)malloc(sizeof(LNode));
  head->next=NULL;
  printf("put in coef and expn:");
  scanf("%d %d",&coef,&expn);
  while (coef!=0)
  {
      s=(linklist)malloc(sizeof(LNode));
      s->coef=coef;
      s->expn=expn;
      s->next=NULL;
      pre=head;
      p=head->next;
      while (p&&p->expn>s->expn)
      {
            pre=p;
            p=p->next;
      }
      s->next=p;
      pre->next=s;
      printf("put in coef and expn:");
      scanf("%d %d",&coef,&expn);
      printf("\n");
  }
  return head;
}

void print(linklist head)
{   /*将建立好的一元多项式输出的函数建立*/
    linklist p;
    p=head->next;
    while (p)
    {    if(p->next==NULL)
             printf("%dX^%d",p->coef,p->expn);
         else
             printf("%dX^%d+",p->coef,p->expn);
         p=p->next;

     }
}

linklist add(linklist La,linklist Lb)
{   /*两个一元多项式的加法运算*/
        linklist Lc,pa,pb,pt,pc;
        int temp;
Lc=(linklist)malloc(sizeof(LNode));
Lc->next=NULL;
pa=La->next;
pb=Lb->next;
pc=Lc;
while (pa&&pb)
{
  if (pa->expn==pb->expn)
  {
   pt=(linklist)malloc(sizeof(LNode));
   pt->expn=pa->expn;
   pt->coef=pa->coef+pb->coef;
   pt->next=NULL;
   pa=pa->next;
   pb=pb->next;
  }
  else if (pa->expn>pb->expn)
  {
   pt=(linklist)malloc(sizeof(LNode));
   pt->expn=pa->expn;
   pt->coef=pa->coef;
   pt->next=NULL;
   pa=pa->next;
  }
  else
  {
   pt=(linklist)malloc(sizeof(LNode));
   pt->expn=pb->expn;
   pt->coef=pb->coef;
   pt->next=NULL;
   pb=pb->next;
  }
                pc->next=pt;
  pc=pt;
}
if (pa)
  pc->next=pa;
else
  pc->next=pb;
return Lc;
}

linklist mul(linklist La,linklist Lb)
{   /*两一元多项式的乘法运算*/
linklist Lc,pa,pb,Temp,pt,pl;
Lc=(linklist)malloc(sizeof(LNode));
Lc->next=NULL;
pa=La->next;
while (pa)
{
  pb=Lb->next;
  Temp=(linklist)malloc(sizeof(LNode));
  Temp->next=NULL;
  pl=Temp;
  while (pb)
  {
   pt=(linklist)malloc(sizeof(LNode));
   pt->coef=pa->coef*pb->coef;
   pt->expn=pa->expn+pb->expn;
   pt->next=NULL;
   pl->next=pt;
   pl=pt;
   pb=pb->next;
  }
  Lc=add(Lc,Temp);
  pa=pa->next;
}
return Lc;
}
int Window()
{   /*算法运行窗口的建立*/
int i;
textmode(C40);
textbackground(BLUE);
textcolor(YELLOW);
clrscr();

gotoxy(16,4);
printf("M E N U");
gotoxy(5,5);
printf("* * * * * * * * * * * * * * * *");
for (i=0; i<15; i++)
{
  gotoxy(5,i+5);
  putchar('*');
  gotoxy(35,i+5);
  putchar('*');
}
gotoxy(5,20);
printf("* * * * * * * * * * * * * * * *");
gotoxy(7,8);
printf("0. Break");
gotoxy(7,12);
printf("1. AVL Tree");
gotoxy(7,16);
printf("2. Unitary Multionmial");
gotoxy(5,22);
printf("Please input your choose:");
scanf("%d",&i);
return i;
}
main()
{
   int x,i,n,a[MAX];
   char c;
   BSTree T;
   linklist p, q, r;
   x=Window();
   while(x>=0)
   {
      if(x==0)
              break;
      else if(x==1)
      {
  clrscr();  /*平衡二叉排序树的建立,增加和删除算法*/
  T=NULL;
  printf("Input the Number of Node:\n");
  scanf("%d",&n);
  printf("Input the BSTree Data:\n");
  for (i=0; i < n; i++)
  {
     scanf("%d",&a[i]);
  }
  for (i=0; i < n; i++)
  {
     T=InsertAVL (T,a[i]);
  }
  midorder(T);
  printf("\n");
  printf("Input the num to insert, input \"0\" to finish!\n");
  scanf("%d",&n);
  while (n!=0)
  {
     T=InsertAVL (T, n);
     scanf("%d",&n);
  }
  printf("\n");
  midorder(T);
  printf("\n");
  printf("Input the num to delete, input \"0\" to finish!\n");
  scanf("%d",&n);
  while (n != 0)
  {
     T=DeleteAVL (T, n);
     scanf("%d",&n);
  }
  midorder(T);;
  scanf("%c",&c);
  c=getch();
  if(c=='#')
  {
     x=0;
     break;
  }
  else
     x=Window();
      }
      if(x==2)
      {   /*一元多项式建立.相加和相乘并对其结果输出的算法*/
  clrscr();
  p=creat();
  q=creat();
  print(p);
  printf("\n");
  print(q);
  r=add(p,q);
  printf("\n");
  print(r);
         r=mul(p,q);
  printf("\n");
  print(r);
  scanf("%c",&c);
  c=getch();
  if(c=='#')
  {
     x=0;
     break;
  }
  else
     x=Window();
      }
   }
}

⌨️ 快捷键说明

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