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

2014-11-23 23:30:16 · 作者: · 浏览: 10
重新看数据结构了,然后第二章线性表多项式老师没讲自己看的,什么鸡巴学校啊。
最后实现的时候系数0没考虑,其实主要的指针操作已经出来了。不过少了一个系数为0的节点应该删去,少了删除操作。
#include  
#include  
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<xi<<"x^"<ci<<"+"; p=p->next; } if(p!=NULL&&p->next==NULL) cout<xi<<"x^"<ci<