• 链表的排序


      最近学习链表,想到链表的排序,网上找到各种资料,不过觉得都写的不是很清楚,于是就自己动手

    对链表的排序主要有两种方法:

            一:只交换节点中的元素,不改变链表的顺序。

           二:直接交换节点,不改变节点中的元素。

    第二种方法相对较复杂点,不过理解啦都很简单的,废话我不多说,把代码贴上相信大家就理解啦。。。

    第一种:

    void LinkList_Sort(LinkList *head)
    {
        int a,t;
        LinkList *p,*q,*M;
        for(p=q=M=head;p->next!=NULL;p=p->next,M=q=p->next)
        {
            for(a=q->num;q!=NULL;q=q->next)
            {
                if(q->num < a)
                {
                    M=q;
                    a=q->num;
                }
            }
            if(p->next!=M)
            {
                t=p->next->num;
                p->next->num=M->num;
                M->num=t;
            }
        }
    }

    第二种:

    void LinkList_Sort( LinkList *head )
    {
        LinkList *p, *prep, *temp, *tail;
        for(tail = NULL; head->next !=tail ;tail = p )
        {
            for( p = head->next,prep = head;p->next != tail ;p = p->next,prep = prep->next)
            {
                if( p->num > p->next->num )
                {
                    temp = p->next;
                    prep->next = p->next;
                    p->next = p->next->next;
                    prep->next->next = p;
                    p = temp;
                }
            }
        }
    }

    很简单的,不过,大家可以自行用其他高效排序算法实现。。。。

  • 相关阅读:
    Java中字符串中子串的查找共有四种方法(indexof())
    idea常用快捷键
    用hive或mr清洗app数据
    使用kafka作为生产者生产数据到hdfs(单节点)
    使用kafka作为生产者生产数据到hdfs
    c++ map的使用
    c++ set集合的使用
    c++ 木块问题
    c++ 大理石
    c 蛇形数字
  • 原文地址:https://www.cnblogs.com/czx1/p/czx_4.html
Copyright © 2020-2023  润新知