zoukankan      html  css  js  c++  java
  • C 链表冒泡排序

    // LowQuikPoint.cpp : 定义控制台应用程序的入口点。
    //

    #include "stdafx.h"
    #include<iostream>

    using namespace std;

    typedef struct Node
    {
        struct Node * next;
        int data;
    }NODE;

    void showList(NODE* L)
    {
        if (L == nullptr)
            return;
        NODE* s = L->next;

        while (s!=nullptr)
        {
            cout << s->data << ",";
            s = s->next;
        }
    }

    void CreateList(NODE* &list)
    {
        int x = -1;
        NODE* p = list;
        if (nullptr == list) return;
        cin >> x;
        while (x != -1)
        {
            Node * n = new Node();
            n->data = x;

            p->next = n;
            p = n;
            cin >> x;
        }
        p->next = nullptr;
    }


    void DeleteList(Node * &header)

    {
        if (nullptr == header) return;

        Node * list = header;

        Node * p = header->next;

        while (list!=nullptr)
        {
            delete list;
            list = p;
            if (p  != nullptr)
                p = p->next;

        }
        header = nullptr;
    }

    Node * bubblySort(Node * &header)
    {
        if (header == nullptr || header->next == nullptr) return header;

        bool isChanger = true;
        Node *  p = nullptr;
        //冒泡大的向后,如果最后只有一个无须再排;如果上一次发现不有交换,说明已经有序,无须再排;
        while (p != header->next->next&& isChanger)
        {
            Node * q = header->next; isChanger = false;
            for (; q->next != nullptr &&q->next != p; q = q->next)
            {
                if (q->data>q->next->data)
                {
                    swap(q->data, q->next->data);
                    isChanger = true;
                }
            }
            p = q;
        }
        return header;
    }


    int _tmain(int argc, _TCHAR* argv[])
    {
        Node * L = new Node();

        CreateList(L);
         showList(L);
        cout << endl;
         bubblySort(L);
         showList(L);
        cout << endl;
         DeleteList(L);
        showList(L);
        return 0;
    }


  • 相关阅读:
    DOM 获取元素,设置样式
    js检查浏览器内核版本信息
    获取浏览器可视屏幕宽度
    swift 闭包+嵌套函数+extension+单例+嵌套函数+??
    HTTP请求错误大全
    Swift:网络库Alamofire
    Swift 值类型和引用类型
    Swift URL Schemes使用
    Swift编程规范
    swift系统学习控件篇:UITableView+UICollectionView
  • 原文地址:https://www.cnblogs.com/sharecenter/p/14372469.html
Copyright © 2011-2022 走看看