| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 313 人关注过本帖
标题:链表的选择排序
取消只看楼主 加入收藏
陆嘉文
Rank: 1
来 自:江西
等 级:新手上路
帖 子:96
专家分:6
注 册:2011-11-10
结帖率:76.92%
收藏
 问题点数:0 回复次数:0 
链表的选择排序
//使用的是选择排序
void sort(struct Student *head){
    struct Student *p_one,*p_one0,*p_two,*p_two0,*end,*min,*temp=NULL;
    //因为要交换元素所以定义p_one0,p_two0表示前面的那个节点

    p_one=head;

    while(p_one!=NULL){ end=p_one; p_one=p_one->next; }//找出链表的最后一个节点的位置

    // 9 1 2 8 3 4 5 6
    for(p_one0=head,p_one=head;p_one!=end;p_one0=p_one,p_one=p_one->next){
        min=p_one;
        for(p_two0=p_one,p_two=p_one->next;p_two!=NULL;p_two0=p_two,p_two=p_two->next){
            if(min->num > p_two->num) min=p_two;
        }
        if(min!=p_one){

            if(head==p_one)//如果为第一个节点
                head=min;
            else//不是第一个
                p_one0->next=min;

            temp=min->next;
            
            if(p_one->next == min){//如果交换的是相邻的节点
                min->next=p_one;
            }else{//不是相邻的节点
                min->next=p_one->next;
                p_two0->next=p_one;            
            }
            p_one->next=temp;
            
            //交换地址 让指针归位 为了可以按照原有顺序遍历链表
            temp=p_one;
            p_one=min;
            min=temp;   
        }
    }
}

这是链表的选择排序,但是不知道错在哪里了,
我检查了好九,求求帮帮忙吧
搜索更多相关主题的帖子: 元素 
2015-08-18 17:11
快速回复:链表的选择排序
数据加载中...
 
   



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

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