单向链表排序

来源:互联网 发布:淘宝客服平均工资 编辑:程序博客网 时间:2024/05/17 01:04
#include <iostream>#include <stdlib.h>#include <stdio.h>using namespace std;struct ac{    int date;    struct ac *next;};void sort1(struct ac *head,int T)//其实 就是冒泡{     ac *tmp,*p,*q;     ac *a,*b;    p=head;//把链首给p    tmp=(struct ac *)malloc(sizeof(struct ac ));//申请空间 以备交换    for(p=head;p!=NULL;p=p->next)//还是有i   j   作为控制循环条件好    {        for(q=p->next;q!=NULL;q=q->next)        {            if(q->date < p->date)            {               a=p->next;//记录p->next地址               b=q->next;//记录q->next地址                *tmp=*p;                *p=*q;                *q=*tmp;                //交换p   q  所有数据                p->next=a;//把p->next地址 还回来                q->next=b;//把q->next地址 还回来            }        }    }}void show( ac *head){    ac *p;    p=head;    while(p)    {        cout<<p->date<<" ";        p=p->next;    }}int main(){    int T;    ac  *head,*p,*q;    while(cin>>T)    {        for(int i=0;i<T;i++)        {            p=(struct ac*)malloc(sizeof(struct ac));            cin>>p->date;            p->next=NULL;            if(i==0)            q=p, head=p;            else            q->next=p,q=p;        }        sort1(head,T);        show(head);    }    return 0;}

0 0
原创粉丝点击