| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 595 人关注过本帖
标题:链表实现多项式的合并
只看楼主 加入收藏
qtc470341376
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-9-19
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
链表实现多项式的合并
#include <stdio.h>
#include <stdlib.h>
//the definiton of list
typedef struct node
{
    int xs;
    int zs;
    node *next;
}lb;
typedef lb* lbx ;
//the creation of list (tail insert with head node)
lbx create(void)
{   int ch=0;
int ch1=0;
lbx head=NULL;
lbx p=NULL;
lbx q=NULL;
head=(lbx)malloc(sizeof(lb));
head->next=NULL;
head->xs=0;
head->zs=0;
p=head;//save the head
printf("Input coefficient:\n");
printf("when ch==* means the first linklist is over. you should input another one\n");
ch=getchar();//input
fflush(stdin);//use fflush mainly clear the cache region

printf("Input index:\n");
ch1=getchar();
fflush(stdin);

while(ch!='*') //using * as the ending symbol
{
    q=(lbx)malloc(sizeof(lb));//apply a new space
    q->xs=ch;
    q->zs=ch1;
    q->next=NULL;
    p->next=q;
    p=q;
    printf("Input coefficient:\n");
    ch=getchar();
    fflush(stdin);
    printf("Input index:\n");
    ch1=getchar();
    fflush(stdin);
}
return head;
}

//print the list
void print(lbx l)
{
    lbx p=NULL;
    printf("the new list is: \n");
    p=l->next;
    while (p!=NULL)
    {
        printf("%d ",p->xs-48);//getchar() getting's number is ASCLL,should minus 48
        printf("%d ",p->zs-48);
        printf("\t");
        p=p->next;
    }
    printf("\n");
}


void print1(lbx l)
{
    lbx p=NULL;
    printf("the new list is: \n");
    p=l->next;
    while (p!=NULL)
    {
        printf("%d ",p->xs-96);//getchar() getting's number is ASCLL,should minus 48
        printf("%d ",p->zs-48);
        printf("\t");
        p=p->next;
    }
    printf("\n");
}
/*lbx link(lbx l1,lbx l2)
{   
    lbx p;
    p=l1;
    while(p->next)
        p=p->next;
    p->next=l2->next;
    return l1;
}*/
/*link two list
lbx link(lbx l1,lbx l2)
{   
    lbx pa=NULL,pb=NULL,pc=NULL;
    pa=l1->next;
    pb=l2->next;
    pc=l1;//pc this is the current indicator
   
    while(pb!=NULL)
    {  
        if(pa->zs<pb->zs)
        {pc->next=pa;pc=pa;pa=pa->next;}
             else if(pa->zs>pb->zs)  
               {pc->next=pb;pc=pb;pb=pb->next;}
                      else if(pa->zs==pb->zs)  
        {
            
            if(pa->xs+pb->xs==0)  
                {
                //lbx q1=NULL,q2=NULL ;//using to release useless indicator
                pa=pa->next;
                pb=pb->next;
                pc->next=pa;
                pc=pa;
                }
            else
                {
                    pc->xs=pa->xs+pb->xs;
                    pa=pa->next;
                    pb=pb->next;
                    pc->next=pa;
                    pc=pa;
                }
        }
    }

    return l1;
}*/
void link(lbx l1,lbx l2)
{
    lbx pa,pb,pc;
    pa=l1->next;pb=l2->next;
    pc=l1;
    while(pa&&pb)
    {
        if(pa->zs<pb->zs)
        {
            pc->next=pa;
            pc=pa;
            pa=pa->next;
        }
        else if(pa->zs<pb->zs)
        {
            pc->next=pb;
            pc=pb;
            pb=pb->next;
        }
        else
        {
            if(pa->zs<pb->zs==0)
                {
                pa=pa->next;
                pb=pb->next;
                pc->next=pa;
                pc=pa;
                }
            else
            {
                pc->xs=pa->xs+pb->xs;
                pa=pa->next;
                pb=pb->next;
                pc->next=pa;
                pc=pa;
            }
        }

    }
   
}
void main()
{
    lbx l1=NULL,l2=NULL;
    l1=create();
    print(l1);
    l2=create();
    print(l2);
    link(l1,l2);
    print1(l1);

}
请教一下:link肯定有问题,老是输出不出来,哪位大神帮忙改下,不要改变代码形式,谢谢了!
搜索更多相关主题的帖子: create include creation first next 
2012-09-19 18:42
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:5 
合并的时候主要是判断同类项,《数据结构基础》这本书上有采用数组实现的算法,你可以参考一下。

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2012-09-25 06:44
bingghost
Rank: 2
等 级:论坛游民
帖 子:70
专家分:85
注 册:2012-1-4
收藏
得分:5 



...

我的头像就是我的女神 可惜我的女神已经死了 所以我的心也死了
2012-09-26 00:42
Demoon
Rank: 2
等 级:论坛游民
帖 子:16
专家分:34
注 册:2012-9-12
收藏
得分:5 
代码太长没仔细看,但是应该有更好的算法
2012-09-26 15:00
Alar30
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:10
帖 子:988
专家分:1627
注 册:2009-9-8
收藏
得分:5 
水平有限
慢慢学习哈。。
2012-09-26 16:07
快速回复:链表实现多项式的合并
数据加载中...
 
   



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

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