#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;
}
单向链表排序
最新推荐文章于 2021-09-06 17:01:32 发布