| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 625 人关注过本帖
标题:一元多项式问题求和。
只看楼主 加入收藏
tremere
Rank: 6Rank: 6
来 自:火星
等 级:侠之大者
帖 子:223
专家分:432
注 册:2013-3-11
结帖率:70.59%
收藏
已结贴  问题点数:20 回复次数:2 
一元多项式问题求和。
一元多项式,求思路和代码注释。
#include<stdio.h>
#include<stdlib.h>
typedef struct  Node{
    int xishu;
    int mic;
    struct Node * next;
}Lnode, *Link;

void create_list(Link &head, int n)
{
    int i;
    Link rear, s;
    rear = head;
    for (i=1; i<=n; i++)
    {
        s = (Link)malloc(sizeof(Lnode));
        scanf("%d%d", &(s->xishu), &(s->mic));
        s->next = NULL;
        rear->next = s;
        rear = s;
    }
}
void printf_list(Link head)
{
    Link p;
    p = head->next;
    while(p)
    {
        printf("%dx%d ", p->xishu, p->mic);
        p = p->next;
        if (p)
            if (p->xishu > 0) putchar('+');
    }
}
void polynomial_add(Link ha, Link hb, Link &hc)
{
    Link pa, pb, pc;
    pa = ha->next;        pb = hb->next;  pc = hc;
    while(pa && pb)
    {
        if (pa->mic < pb->mic)
        {
            pc->next = pa;    pc = pc->next;    pa = pa->next;
        }
        else if(pa->mic > pb->mic)
            {
            pc->next = pb;    pc = pc->next;  pb = pb->next;
            }
            else
            {
                int xsh;
                xsh = pa->xishu + pb->xishu;
                if (xsh)
                {
                    pa->xishu = xsh;
                    pc->next = pa;  pc = pc->next;
                }
                pa = pa->next;        pb = pb->next;
            }
    }
    if (pa)    pc->next = pa;
    if (pb) pc->next = pb;
}
int main()
{
    Link heada, headb, headc;
    int n;
    heada = (Link)malloc(sizeof(Lnode));
    headb = (Link)malloc(sizeof(Lnode));
    headc = (Link)malloc(sizeof(Lnode));
    printf("请输入多项式 A 的项数: ");
    scanf("%d", &n);
    printf("输入各项的系数和幂次: ");
    create_list(heada, n);
    printf("请输入多项式 B 的项数: ");
    scanf("%d", &n);
    printf("输入各项的系数和幂次: ");
    create_list(headb, n);
    polynomial_add(heada, headb, headc);
    printf("A+B的结果多项式为: ");
    printf_list(headc);


}
本人自知看别人的代码不如自己写,但是,我现在想先学会看别人的代码,了解别人的
思路,然后自己模仿着做,希望大家帮帮我。把代码的注释和思路告诉我。
搜索更多相关主题的帖子: include 多项式 
2014-05-05 23:06
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:10 
搞半天 “mic” 原来是幂次,晕菜。
大体就是以链表形式创建了两个多项式,并求得其和并输出。关键其实只是链表部分。明白了链表再看这段程序就比较容易了。
当然程序的毛病不是没有, malloc 了内存之后,在结束时没有释放。
2014-05-05 23:35
傥来
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2014-5-4
收藏
得分:10 
M一下
写完英语来看
2014-05-06 21:43
快速回复:一元多项式问题求和。
数据加载中...
 
   



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

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