当前位置:编程学习 > C/C++ >>

数据结构一元多项式加法单链表实现

重新看数据结构了,然后第二章线性表多项式老师没讲自己看的,什么易做图学校啊。
最后实现的时候系数0没考虑,其实主要的指针操作已经出来了。不过少了一个系数为0的节点应该删去,少了删除操作。
 
#include<iostream>  
#include<stdlib.h>  
using namespace std;  
struct node{  
    int xi;  
    int ci;  
    node* next;  
};  
int main()  
{  
    int lengtha,lengthb,i;  
    node *L1,*L2,*p,*q;  
    cin>>lengtha>>lengthb;  
    L1=(node*)malloc(sizeof(node));  
    L2=(node*)malloc(sizeof(node));  
    L1->next=NULL;  
    L2->next=NULL;  
    p=L1;  
    for(i=1;i<=lengtha;i++)  
    {  
        q=(node*)malloc(sizeof(node));  
        cin>>q->xi>>q->ci;  
        p->next=q;  
        p=q;  
        p->next=NULL;  
    }  
    p=L2;  
    for(i=1;i<=lengthb;i++)  
    {  
        q=(node*)malloc(sizeof(node));  
        cin>>q->xi>>q->ci;  
        p->next=q;  
        p=q;  
        p->next=NULL;  
    }  
    p=L1->next;  
    q=L2->next;  
    while(p!=NULL&&q!=NULL)  
    {  
        if(p->ci==q->ci)  
        {  
            p->xi=p->xi+q->xi;  
            p=p->next;  
            q=q->next;  
        }  
        else if(p->ci>q->ci)  
        {  
            node *j,*n;  
            j=L1;  
            n=q;  
            q=q->next;  
            while((j->next)!=p)  
            {  
                j=j->next;  
            }  
            n->next=j->next;  
            j->next=n;  
        }  
        else p=p->next;  
    }  
    if(p==NULL&&q!=NULL)  
        p=q;  
  
    p=L1->next;  
    while(p!=NULL&&p->next!=NULL)  
    {  
        cout<<p->xi<<"x^"<<p->ci<<"+";  
        p=p->next;  
    }  
    if(p!=NULL&&p->next==NULL)  
        cout<<p->xi<<"x^"<<p->ci<<endl;  
    system("pause");  
    return 0;  
}  

 

 
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,