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

📄 c.cpp

📁 Description 一个一元多项式可以看作由若干个一元单项式按降幂排列成的线性表。请编写程序对输入的两个一元多项式求积
💻 CPP
字号:
#include<stdio.h>
typedef struct listnode
{   int a;
    int b;
    struct listnode * next;
}*list;
//初始化
list initlist()
{
    list L;
    L= new listnode();
    return L;
}
//撤消
int destory(list &L) 
{
    list p = L;
    list q;      
    while(p!= NULL)
    {
         q=p->next;
         delete(p);
         p=q;
    }
    L=NULL;
    p=NULL;
    q=NULL;
    return 1;
}
//输入
list inputlist(list L)
{  
    list p;
    int x;
    int y;
    int i=1;
    p= new listnode();
    p=L;
    while(i)
    {
        scanf("%d",&x);
        scanf("%d",&y);
        if(x==-1&&y==-1)
        {  i=0; 
        }
        else if(x==0)
        {
            continue;
        }       
        else
        {   list q;
            q=new listnode();
            q->a=x;
            q->b=y;
            p->next=q;
            p=p->next;
        }
    } 
   // printf("\n");   
    return L;
} 
//求和
list qiuhe(list L1,list L2 )
{
    list p,q;
    p=L1;
    q=L2;    
    while(p->next!=NULL&&q->next!=NULL)
    {
         if(p->next->b>q->next->b)
             p=p->next;
         else if(p->next->b<q->next->b)
         {
             list r;
             r=q->next;
             q->next = r->next;
	         r->next=p->next;
	         p->next=r;
	         p=p->next;
        }
        else if(p->next->b==q->next->b)
        {    
             p->next->a=p->next->a+q->next->a;
             if(p->next->a==0)//删除系数为0的结点 
             {
                  list s;
                  s=p->next;
                  p->next=p->next->next;
	              delete (s);                
	              q=q->next;
	          }
              else if(p->next->a!=0)
              {               
                  p=p->next;    
                  q=q->next;
               }              
        }
	       	    
	}
	if(p->next==NULL)
        p->next=q->next; 
    if(q->next==NULL)
        q->next=p->next;
    //destory(L2);
    return L1;           
} 
//求积
list qiuji(list L1,list L2)
{
    list p,q,r,L3,L4;
    L3=initlist();
    L4=initlist();
    r=L3;
    p=L1;
    q=L2;
    while(p->next)
    {
        while(q->next)
        {
             r->next=new listnode();
             r->next->a=p->next->a*q->next->a;
             r->next->b=p->next->b+q->next->b;
             q=q->next;
             r=r->next;   
        }
        q=L2;
        r=L3;
        L4=qiuhe(L4,L3);
        p=p->next;  
    }
    //destory(L1);
    //destory(L2);
    //destory(L3);
    return L4;
}
//输出 
void outputlist(list L)
{    
    list p;
    p= new listnode();
    p=L;  
    if(p->next==NULL)
    printf("%d",0);
    else
    {
        while(p->next)
            {    printf("%d",p->next->a);
                 printf(" ");
                 printf("%d",p->next->b);
                 printf(" ");
                 p=p->next;
            }
    } 
    printf("\n");   
    return;
}
int main()
{   list initlist();
    int destory(list &L);
    list inputlist(list L);
    list qiuhe(list L1,list L2);
    list qiuji(list L1,list L2);
    void outputlist(list L);
    list L1=initlist(),L2=initlist(),L3=initlist();
    L1=inputlist(L1);
    L2=inputlist(L2);
    L3=qiuji(L1,L2);
    outputlist(L3);
    getchar();
    getchar();
    return 0;
}                 

⌨️ 快捷键说明

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