#include
#include
#include
typedef int ElementType;
typedef struct Node{
ElementType Element;
Node*Next;
};
typedef Node *Position;
typedef struct{
Position Front,Rear;
}Queue;
void MakeNull_Queue(Queue *Q){
Position Header=(Node*)malloc(sizeof(Node));
Header->Next=NULL;
Q->Front=Header;
Q->Rear=Header;
}
char Empty_Queue(Queue Q){
return Q.Front==Q.Rear;
}
Node *Make_Node(ElementType X){
Node*temp=(Node*)malloc(sizeof(Node));
temp->Element=X;
return temp;
}
void EnQueue(Queue *Q,Node *P){

Q->Rear->Next=P;
Q->Rear=Q->Rear->Next;
Q->Rear->Next=NULL;
}
Queue Input(int n){
Queue L;
MakeNull_Queue(&L);
ElementType X;
for(int i=0;i printf("Phan tu %d:\t",i);
scanf("%d",&X);
EnQueue(&L,Make_Node(X));
}
return L;
}
void BublleSort(Queue L){
Queue i,j;
i.Front=L.Front;
while(!Empty_Queue(i)){
j.Front=i.Front->Next;
while(j.Front!=i.Rear->Next){
if(i.Front->Element>j.Front->Element){
ElementType Temp;
Temp=i.Front->Element;
i.Front->Element=j.Front->Element;
j.Front->Element=Temp;
}
j.Front=j.Front->Next;
}
i.Front=i.Front->Next;
}
}

void Out_Queue(Queue S){
Queue temp =S;
while(!Empty_Queue(temp)){//&& (temp.Front)!=(temp.Rear)){
printf("%d\t",temp.Front->Next->Element);
temp.Front=temp.Front->Next;
}
}
void main(){
clrscr();
int n,i;
printf("Mhap n=");
scanf("%d",&n);
printf("Nhap hang:");
Queue L;
MakeNull_Queue(&L);
L=Input(n);
printf("Hang vua nhap:\n\t");
Out_Queue(L);
BublleSort(L);
printf("\n\nHang sau khi sap xep\n");
Out_Queue(L);
getch();
}