| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 430 人关注过本帖
标题:两个链表合并以及排序的问题~~
只看楼主 加入收藏
hywhll888
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2011-6-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
两个链表合并以及排序的问题~~
#include <stdio.h>
#include <math.h>
#include <string.h>
#define LEN sizeof(struct lb)
struct lb
{
    int no;
    char name[15];
    struct lb *next;
}a[3]={{6,"chen",&a[1]},{5,"huan",&a[2]},{4,"li",NULL}},b[3]={{3,"ou",&b[1]},{2,"guo",&b[2]},{1,"he",NULL}};


void main()
{
    struct lb *px(struct lb *head);
    struct lb (*head1)[3],(*head2)[3],*p1,*p2;
    head1=&a;
    head2=&b;
    p1=head1;
    p2=head2;
    while(p1->next!=NULL)  \*合并链表*\
    {
        p1=p1->next;
    }
    while(p2->next!=NULL)
    {
        p1->next=p2;
        p1=p1->next;
        p2=p2->next;
    }
    p1=head1;
    while(p1!=NULL)
    {
        printf("%5d%10s\n",p1->no,p1->name);
        p1=p1->next;
    }
    px(head1);
}


struct lb *px(struct lb *head)  \*排序*\
{
    struct lb *p1,*p2;
    int k;
    p1=head;
    p2=head;
    while(p1!=NULL)
    {
        while(p2!=NULL)
        {
            if((p1->no)<(p2->no))
            {
                k=p1->no;
                p1->no=p2->no;
                p2->no=k;
            }
            p2=p2->next;
        }
        p2=head;
        p1=p1->next;
    }
    p1=head;
    while(p1!=NULL)
    {
        printf("%5d%10s\n",p1->no,p1->name);
        p1=p1->next;
    }
    return(head);
}

本来是想用改next指针来实现排序的(用合并后的表状态),这样就不用改号码直接改指针就可以了,但是想了很久没想出好的办法来实现它。只有
暂时先用改号码来实现排序了,求高人指点不改号码只改指针NEXT实现排序!!
搜索更多相关主题的帖子: include 
2011-08-11 10:52
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:20 
哈夫曼
2011-08-11 11:02
hywhll888
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2011-6-9
收藏
得分:0 
回复 2楼 hahayezhe
你说的东西太深奥了 ,还没学到
2011-08-11 11:12
qq645052463
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2011-7-8
收藏
得分:0 
#include <stdio.h>
#include <math.h>
#include <string.h>
#define LEN sizeof(struct lb)
struct lb
{
    int no;
    char name[15];
    struct lb *next;
}a[3]={{6,"chen",&a[1]},{5,"huan",&a[2]},{4,"li",NULL}},b[3]={{3,"ou",&b[1]},{2,"guo",&b[2]},{1,"he",NULL}};


void main()
{
    struct lb *px(struct lb *head);
    /*struct lb (*head1)[3],(*head2)[3],*p1,*p2;
    head1=&a;
    head2=&b;
    p1=head1;
    p2=head2;*/  //应该写成

    struct lb *head1,*head2,*p1,*p2;
    head1=a;
    head2=b;
    p1=head1;
    p2=head2;
    while(p1->next!=NULL)  //   \*合并链表*\  应该该改成/*合并链表*/  下面也一样
    {
        p1=p1->next;
    }
    while(p2->next!=NULL)
    {
        p1->next=p2;
        p1=p1->next;
        p2=p2->next;
    }
    p1=head1;
    while(p1!=NULL)
    {
        printf("%5d%10s\n",p1->no,p1->name);
        p1=p1->next;
    }
    px(head1);
}


struct lb *px(struct lb *head)  //   \*排序*\
 
{   
   struct lb *p1,*p2;
    int k;
    p1=head;
    p2=head;
    while(p1!=NULL)
    {
        while(p2!=NULL)
        {
            if((p1->no)<(p2->no))   //这里面的排序你只是把前面的数字给换了   要想把整个结构体换还需要重新指向
            {
                k=p1->no;      
                p1->no=p2->no;
                p2->no=k;
            }
            p2=p2->next;
        }
        p2=head;
        p1=p1->next;
    }
   
    p1=head;
    while(p1!=NULL)
    {
        printf("%5d%10s\n",p1->no,p1->name);
        p1=p1->next;
    }
    return(head);
}
2011-08-13 17:08
快速回复:两个链表合并以及排序的问题~~
数据加载中...
 
   



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

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