| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1359 人关注过本帖
标题:有序链表连接问题
只看楼主 加入收藏
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:10 
有序链表连接问题
程序代码:
struct linknode *connect(struct linknode *head1,struct linknode *head2)
{
    struct linknode *head,*p1,*p2,*r,*t;
    p1=head1;
    p2=head2;
    head=p1;
    //p2=head;
    while(p1!=NULL&&p2!=NULL)
    {
        if(p1->data<p2->data)
        {
            t=p1->next;
            p1->next=p2;
            p1=t;
        }
        if(p1->data>p2->data)
        {
            r=p2->next;
            p2->next=p1;
            p2=r;
        }
    }
这是我写的程序代码的一部分!功能是实现两个有序递增链表的的链接!比如链表一为1 3 5,链表2为 2 4 6(都是不带头结点的链表)就对这两组数来说最后一次循环时p先等于NULL但此时已经把链表连接好了啊!这题我就举这个例子分析好久了!但感觉还是没错啊!这个程序我用另外一种方法做出来了!但就是不知道这个程序代码错在哪!硬是没发现错误!望指教。谢谢
搜索更多相关主题的帖子: 链表 
2010-09-19 09:04
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
代码请给完整,你连这个函数的代码都不给完整……
2010-09-19 10:57
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:0 
程序代码:
#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");
}
struct linknode *connect(struct linknode *head1,struct linknode *head2)
{
    struct linknode *head,*p1,*p2,*r,*t;
    p1=head1;
    p2=head2;
    head=p1;
    //p2=head;
    while(p1!=NULL&&p2!=NULL)
    {
        if(p1->data<p2->data)
        {
            t=p1->next;
            p1->next=p2;
            p1=t;
        }
        if(p1->data>p2->data)
        {
            r=p2->next;
            p2->next=p1;
            p2=r;
        }
    }
/*    while(p2!=NULL)
        p1=p2;
    while(p1!=NULL)
        p2=p1;
    head=head->next;
    free(head);*/
    return head;
}
void main()
{
    struct linknode *head1,*head2,*head3;
    head1=create();
    disp(head1);
    head2=create();
    disp(head2);
    head3=connect(head1,head2);
    disp(head3);
}
    
不好意思!我怕大家看着麻烦!所以就贴完!致歉!这个程序是有问题的肯定!但是我就是冲着1 3 5和2 4 6来的!我想着这个连接应该没问题!可是,麻烦给看一下哈
2010-09-19 11:04
真我
Rank: 4
等 级:业余侠客
威 望:1
帖 子:146
专家分:210
注 册:2010-7-14
收藏
得分:0 
                    t=p1->next;
            p1->next=p2;
            p1=t;
       改成p2->next=p1->next;
           p1->next=p2;
        
2010-09-19 12:31
真我
Rank: 4
等 级:业余侠客
威 望:1
帖 子:146
专家分:210
注 册:2010-7-14
收藏
得分:0 
遍历链表2,
取数据,再遍历链表1,找到这样的位置(  p1-data<=p2->data<p1->next->data)
2010-09-19 12:43
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:0 
以下是引用真我在2010-9-19 12:43:27的发言:

遍历链表2,
取数据,再遍历链表1,找到这样的位置(  p1-data<=p2->datanext->data)
哦!我看下!谢谢了
2010-09-19 18:43
真我
Rank: 4
等 级:业余侠客
威 望:1
帖 子:146
专家分:210
注 册:2010-7-14
收藏
得分:0 
其实有序的话,可以用两个指针来操作两个链表,先比较第一个结点,如果小于或等于就插在前面,两个指针都++,
如果大于,原表指针++,再比较
2010-09-20 00:29
真我
Rank: 4
等 级:业余侠客
威 望:1
帖 子:146
专家分:210
注 册:2010-7-14
收藏
得分:30 
以下是引用真我在2010-9-20 00:29:12的发言:

其实有序的话,可以用两个指针来操作两个链表,先比较第一个结点,如果小于或等于就插在前面,两个指针都++,
如果大于,原表指针++,再比较
上面写错了,更正一下:不是两个指针都++,是插入的链表指针++
2010-09-20 00:32
真我
Rank: 4
等 级:业余侠客
威 望:1
帖 子:146
专家分:210
注 册:2010-7-14
收藏
得分:0 
如果原表到尾,插入的链表没到尾,就插后面了
2010-09-20 00:34
wangjianhui
Rank: 8Rank: 8
来 自:^帅帅城^
等 级:蝙蝠侠
威 望:2
帖 子:353
专家分:745
注 册:2010-3-19
收藏
得分:0 
呵呵  对于指针我也总弄混

加油
2010-09-20 07:27
快速回复:有序链表连接问题
数据加载中...
 
   



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

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