| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 405 人关注过本帖
标题:关于链表的排序!请高手帮忙看看怎么弄?
只看楼主 加入收藏
zd1505675319
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:178
注 册:2011-11-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
关于链表的排序!请高手帮忙看看怎么弄?
#include <iostream.h>
struct STU                        //结构体
{
    int num;
    char name[20];
    float c_score;
    STU *next;
};
STU *create()        //建立链表函数
{
    STU *head,*p1,*p2;
    int n=0;
    p1=p2=new STU;
    cout<<"请输入数据:";
    cin>>p1->num>>p1->name>>p1->c_score;
    head=NULL;
    while(p1->num!=0)
    {   
        n++;
        if(n==1)
        {
            head=p1;   
        }
        else
        {
            p2->next=p1;
        }
        p2=p1;
        p1=new STU;
        cout<<"请输入数据:";
        cin>>p1->num>>p1->name>>p1->c_score;
    }
    p2->next=NULL;
    return head;
}
void print(STU *head)        //链表的输出
{
    STU *p1;
    p1=head;
    while(p1!=NULL)
    {
        cout<<p1->num<<" "<<p1->name<<" "<<p1->c_score<<endl;
        p1=p1->next;
    }
}
STU  *sort(STU *head)        //链表的排序
{   
    STU *p1,*newhead,*pa1,*p2,*p3,*temp;
    p1=p2=head;
    while(p1->num!=0)
    {
        if(p1->c_score<p1->next->c_score)
        {
            p2=p1->next;
            p1->next=p2->next;
            p2->next=p1;
            p2=p1;
        }
        else
        {
            p2=p1=p1->next;
        }
    }
   
    return head;
}
int main()        //主函数
{
    STU *head;
    head=create();
//    print(head);
    head=sort(head);
    print(head);
    return 0;
}
本人自学,小菜高手勿笑。。。。。
搜索更多相关主题的帖子: head next include create 结构体 
2012-06-25 15:44
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:0 
https://bbs.bccn.net/viewthread.php?tid=371133&page=1#pid2111368

希望上面帖子第10楼的回复对你有用。
2012-06-25 16:04
zd1505675319
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:178
注 册:2011-11-4
收藏
得分:0 
谢了先看看
2012-06-25 16:18
zd1505675319
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:178
注 册:2011-11-4
收藏
得分:0 
我写的这个哪里有问题?
2012-06-25 16:22
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:0 
在链表里交换两个相邻的A、B节点,必须要考虑3个指针,A的前驱、A的后继、B的后继。

在这里表现为 p1 和 p2。

程序代码:
            p2=p1->next;
            p1->next=p2->next;
            p2->next=p1;
            p2=p1;


1. p2指向p1的下一个节点,即p2是p1的后继,p1是p2的前驱,很好。

2. p1的后继等于p2的后继,这点做的很好,考虑到了上述3个指针中的第二个,即A的后继。

3. p2的后继等于p1,很好,考虑到了上述3个指针中的第三个,即B的后继。

4. p2 = p1,我没看明白,但是你这里明显漏掉了第一个指针,即A的前驱你没考虑,以前指向p1节点的指针应该指向p2节点,你说呢?
2012-06-25 17:25
zd1505675319
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:178
注 册:2011-11-4
收藏
得分:0 
回复 5楼 demonleer
我也考虑到了但是怎么实现呢?
2012-06-25 20:32
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:10 
以下是引用zd1505675319在2012-6-25 20:32:13的发言:

我也考虑到了但是怎么实现呢?

我在那个帖子的十楼有详细的代码,你好好看看行么?
2012-06-25 22:33
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:10 
回复 7楼 demonleer
他是想你给他做出来

总有那身价贱的人给作业贴回复完整的代码
2012-06-25 22:40
快速回复:关于链表的排序!请高手帮忙看看怎么弄?
数据加载中...
 
   



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

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