| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 950 人关注过本帖
标题:用链表实现两个多项式相加的函数
取消只看楼主 加入收藏
星空烨
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-4-1
收藏
 问题点数:0 回复次数:1 
用链表实现两个多项式相加的函数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef int ElemType
typedef struct LNode
{     ElemType data;
      struct LNode *next;
} LinkList;   
void CreateListR(LinkList *L,int a[],int n)
{
     LinkList *s,*r;
     int i;
     L=(LinkList *)malloc(sizeof(LinkList));
     
     r=L;
     for(i=0;i<n;i++)
     {    s=(LinkList *)malloc(sizeof(LinkList));
          s->data=a[i];
          r-next=s;
          r=s;
     }
     r->next=NULL;
}

void PlusList (LinkList *&Ha,LinkList *&Hb,LinkList *&Hc)
{
     LinkList *pa,*pb,*pc,*s;
     
     pa=Ha->next;
     pb=Hb->next;
     Hc=(LinkList *)malloc(sizeof(LinkList));
     pc=Hc;
     
     while(pa!=NULL&&pb!=NULL)
     {     S=(LinkList *)malloc(sizeof(LinkList));
           s->data=pa->data+pb->data;
           pc->next=s;
           pc=s;
           pa=pa->next;
           pb=pb->next;
     }
     
     if(pa==NULL)
         pc=Hb;
     if(pb==NULL)
         pc=Ha;
}

void DispList (LinkList *L)
{
     LinkList *p=L->next;
     int i;
     
     for(i=2;i>=0;i--)
     {    printf("%2d x*x",p->data);
                p=p->data;
          printf("%2d x",p->data;);
                p=p->data;
          printf("%2d ",p->data);
                p=p->data;
     }
     printf("\n");
}


int main()
{
    LinkList *Ha,*Hb,*Hc;
    a[3]={2,5,7};
    b[3]={6,5,4};
   
    CreateListR(Ha,a,3);
    printf("第一个多项式:\n");
    DispList(Ha);
   
    CreateListR(Hb,b,3);
    printf("第二个多项式:\n");
    DispList(Hb);
   
    PlusList(Ha,Hb,Hc);
    printf("相加的结果:\n");
    DispList(Hc);
    getchar();
   
}            


哈哈,帮忙看看啊
搜索更多相关主题的帖子: 链表 多项式 函数 相加 
2008-10-28 18:56
星空烨
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-4-1
收藏
得分:0 
我改的没有错误了,但是不能实现.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Node
{     int data;
      struct Node *next;
}*L;   
void CreateListR(struct Node*L,int a[],int n)
{
     struct Node *s,*r;
     int i;
     L=(struct Node *)malloc(sizeof(struct Node));
     
     r=L;
     for(i=0;i<n;i++)
     {    s=(struct Node *)malloc(sizeof(struct Node));
          s->data=a[i];
          r->next=s;
          r=s;
     }
     r->next=NULL;
}

void PlusList (struct Node *&Ha,struct Node *&Hb,struct Node *&Hc)
{
     struct Node *pa,*pb,*pc,*s;
     
     pa=Ha->next;
     pb=Hb->next;
     Hc=(struct Node *)malloc(sizeof(struct Node));
     pc=Hc;
     
     while(pa!=NULL&&pb!=NULL)
     {     s=(struct Node *)malloc(sizeof(struct Node));
           s->data=pa->data+pb->data;
           pc->next=s;
           pc=s;
           pa=pa->next;
           pb=pb->next;
     }
     
     if(pa==NULL)
         pc=Hb;
     if(pb==NULL)
         pc=Ha;
}

void DispList (struct Node *L)
{
     struct Node *&p=L->next;                       
     while(p!=NULL)
     
     {    printf("%2d \n", p->data);
          p=p->next;
      }   
                                                                                                                                                        
     
     printf("\n");
}


int main()
{
    struct Node *Ha,*Hb,*Hc;                                                                                                                                                   
    int a[3]={2,5,7};
    int b[3]={6,5,4};
   
    CreateListR(Ha,a,3);
   
    printf("第一个多项式:\n");
   
    DispList(Ha);
    printf("has done");
   
    CreateListR(Hb,b,3);
    printf("第二个多项式:\n");
    DispList(Hb);
   
    PlusList(Ha,Hb,Hc);
    printf("两个多项式相加的结果:\n");
    DispList(Hc);
    getchar();
   
}
2008-10-28 20:31
快速回复:用链表实现两个多项式相加的函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024876 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved