• 单链表冒泡排序(交换节点)


    代码如下:

    #include<iostream>
    #include<cstdlib>
    using namespace std;
    int num;
    typedef struct list
    {
        int data;
        struct list *next;
    }Lnode,*linklist;
    linklist Createlist(int n)//构建带头结点的链表
    {
        linklist p, head,tail;
        head = (linklist)malloc(sizeof(Lnode));
        tail = NULL;
        head->next = tail;
        for (int i = 0; i < n; i++)
        {
            p = (linklist)malloc(sizeof(Lnode));
            cin >>p-> data;
            p->next = NULL;
            if (tail == NULL)
                head->next = p;
            else
                tail->next = p;
            tail=p;
        }
        return head;//返回头结点的地址
    }
    void sortlist(linklist head)//对链表进行bubble sort
    {
        linklist pre, p,tail;
        tail = NULL;
        while (head->next != tail)
        {
            pre = head;
            p = head->next;
            while (p->next!=tail)
            {
                if (p->data > p->next->data)
                {
                    pre->next = p->next;
                    p->next = pre->next->next;
                    pre->next->next = p;
                }
                else
                    p = p->next;
                pre = pre->next;
            }
            tail = p;
        }
    }
    int main()
    {
        cin >> num;
        linklist head,x;
        head = Createlist(num);
        sortlist(head);
        x = head->next;
        while (x != NULL) 
        {
            cout << x->data;
            x = x->next;
        }
        cout << endl;
        return 0;
    }
  • 相关阅读:
    Junit单元测试
    点餐系统
    文件的横纵转换
    零碎知识--日积月累
    json校验
    程序员必须收藏的14个顶级开发社区!
    管理员权限
    Thinking In Java 读书笔记
    学生考试系统
    JeeSite开发笔记
  • 原文地址:https://www.cnblogs.com/orion7/p/7227627.html
Copyright © 2020-2023  润新知