zoukankan      html  css  js  c++  java
  • 单链表冒泡排序(交换节点)

    代码如下:

    #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;
    }
  • 相关阅读:
    守护线程
    接口中的方法重写
    jvm内存结构
    浅拷贝,深拷贝
    队列
    12月4号荒度了一天
    同步条件
    条件变量
    信号量Semaphore
    sql练习
  • 原文地址:https://www.cnblogs.com/orion7/p/7227627.html
Copyright © 2011-2022 走看看