现在的位置: 首页 > 综合 > 正文

单链表冒泡排序

2012年09月16日 ⁄ 综合 ⁄ 共 804字 ⁄ 字号 评论关闭
#include<iostream>
#include<cstdio>
#include <malloc.h>
using namespace std;
typedef struct node{
  int data;
   struct node *next;
}linklist;
linklist* init()
{
    linklist* head;
    head=(linklist*)malloc(sizeof(linklist));
    head->next=NULL;
    return head;
}
void sort(linklist* head)
{
    linklist *p1,*p2;
    for(p1=head;p1!=NULL;p1=p1->next)
      for(p2=p1->next;p2!=NULL;p2=p2->next)
        {
            if(p1->data>p2->data)
            {
                int temp=p1->data;
                p1->data=p2->data;
                p2->data=temp;
            }
        }
}
void add(linklist *head,int x)
{
    linklist *p,*q=head;
    p=(linklist*)malloc(sizeof(linklist));
    p->data=x;
    p->next=NULL;
    while(q->next)
        q=q->next;
    q->next=p;
}
void show(linklist *head)
{
    linklist *p=head;
    cout<<"升序排序之后:"<<endl;
    while(p->next)
    {
        cout<<p->data<<" ";
        p=p->next;
    }
}
int main()
{
    int n,x;
    linklist *p;
    p=init();
    cout<<"输入元素个数:"<<endl;
    cin>>n;
    cout<<"输入元素:"<<endl;
    for(int i=0;i<n;i++)
     {
         cin>>x;
         add(p,x);
     }
     sort(p);
     show(p);
    return 0;
}

抱歉!评论已关闭.