链表的一种排序---冒泡排序

来源:互联网 发布:哪里有唐筛计算软件 编辑:程序博客网 时间:2024/05/18 00:36
#include <iostream>

using namespace std;

struct node
{
    int a;
    node *next;

};


int main()
{
    int n,m;
    cin>>n;
m=n;
    node *first=new node,*rear=new node;
    first->next=NULL;
    rear=first;
   while(n--)
    {
       node *x=new node;
       cin>>x->a;
       rear->next=x;
       rear=x;
    }
    rear->next=NULL;
    rear=first;
//冒泡排序
    node *n_max,*p,*h;
    m-=1; 
    while(m--)
    {
h=rear;
        p=rear->next;
       while(p&&p->next)
       {
           n_max=p;
           p=p->next;
           if(n_max->a>p->a)
           {
               h->next=n_max->next;
               n_max->next=p->next;
               p->next=n_max;
               p=n_max;
           }
  h=h->next;
       }

    }

   //输出

    while(rear&&rear->next)
    {
        p=rear;
        cout<<rear->next->a<<" ";
        rear=rear->next;
        delete p;
    }
    return 0;

}

此外还有选择排序,插入排序,方法基本一样

0 0
原创粉丝点击