| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 618 人关注过本帖
标题:求助一交替合并链表问题
只看楼主 加入收藏
fwj33
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-10-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
求助一交替合并链表问题
设线性表LA=(a1, a2, …, am),LB=(b1, b2, …, bn)。试编写一个算法,将LA、LB合并为线性表LC,使
LC=(a1,b1...am,bm,bm+1...bn) m<=n时
或者LC=(a1,b1...an,bn,an+1...am) m>n时


要求LA、LB和LC均以单链表为存储结构,且LC表利用LA和LB中结点空间,这里m和n的值没有保存在头结点中。
搜索更多相关主题的帖子: 链表 
2010-10-23 12:00
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:10 
程序代码:
#include<stdio.h>
#include<malloc.h>
struct linknode
{
    int data;
    struct linknode *next;
};

struct linknode *create()//创建单链表
{
    int d;
    int i=1;
    struct linknode *head,*s,*t;
    head=NULL;
   
    printf("建立一个单链表,data域数据已0结束:\n");
    while(1)
    {
        printf("%d:",i);
        scanf("%d",&d);
        if(d==0) 
             break;

        if(i==1)//建立第一个结点
        {
            head=(struct linknode *)malloc(sizeof(struct linknode));
            head->data=d;
            head->next=NULL;
            t=head;
        }
        else//建立其余结点
        {
            s=(struct linknode *)malloc(sizeof(struct linknode));
            s->data=d;
            s->next=NULL;
            t->next=s;
            t=s;
        }
        i++;
    }
    return head;
}
void disp(struct linknode *head)//输出结点数据
{
    struct linknode *p=head;
    printf("输出一个单链表:\n");
    if(p==NULL)
        printf("");
    while(p!=NULL)
    {
        printf("%d",p->data);
        p=p->next;
    }
    printf("\n");
}
int len(struct linknode *head)//返回单链表的长度
{
    int pcount=0;//结点计数器
    struct linknode *p=head;
    while(p!=NULL)
    {
        p=p->next;
        pcount++;
    }
    return pcount;
}
struct linknode *JCHB(struct linknode *heada,struct linknode *headb)//交叉合并函数
{
   
    struct linknode *ha,*hb,*t,*s,*hc;
    hc=heada;
    ha=heada;
    t=heada;
    hb=headb;
    s=headb;

    if(len(ha)!=len(hb))
    {
       
        printf("不合题意,链表长度不同\n");
        return NULL;
    }

    while(ha!=NULL)
    {
        t=ha;
        ha=ha->next;
        t->next=hb;
        s=hb;
        hb=hb->next;
        s->next=ha;
    }
    return (hc);
}
void main()
{
    struct linknode *heada,*headb,*headc;
    heada=create();
    disp(heada);//输出链表数据
    headb=create();
    disp(headb);
    headc=JCHB(heada,headb);
    disp(headc);
}
这是我以前做的,不过要求是链表长度一样。不过整体思路都是一样的,楼主参考一下哈
2010-10-23 16:08
取而代之
Rank: 2
等 级:论坛游民
帖 子:32
专家分:53
注 册:2010-7-11
收藏
得分:10 
楼主,数据结构严版的有这个算法吧,囧。
2010-10-25 21:15
快速回复:求助一交替合并链表问题
数据加载中...
 
   



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

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