// cac thao tac tren danh sach FIFO gom cac phan so;
#include <stdio.h>
#include <conio.h>
typedef struct ps
{
inttu,mau;
ps *link;
};
void swap(int *a,int *b) // ham doi cho a va b
{
int tg;
tg=*a;
*a=*b;
*b=tg;
}
void xemfifo(ps *f)
{
ps *p;
p=f;
while(p!=NULL)
{
printf("\n %d/%d",p->tu,p->mau);
p=p->link;
}
}
ps *nhap(ps *f, ps *l, int n)
{
ps *p;
int i;
nhap: for(i=0;i<n;i++)
{
p=new(ps);
printf("\nNhap tu va mau : ");
scanf("%d%d",&p->tu,&p->mau);
if(p->mau==0) {
printf("\nNhap sai mau phai khac 0");
f=NULL;
goto nhap;
}
p->link=NULL;
if(f==NULL) { f=p; l=p;}
else{ l->link=p; l=p;}
}
return f;
}
void sapxep(ps *f)
{
ps *p1,*p2;
p1=f;
while(p1!=NULL)
{
p2=p1->link;
while(p2!=NULL)
{
if((((float)p1->tu/p1->mau))>(((float)p2->tu/p2->mau)))
{
//doicho
swap(&p1->tu,&p2->tu);
swap(&p1->mau,&p2->mau);
}
p2=p2->link;
}
p1=p1->link;
}
}
ps *timkiem(ps *f)
{
ps *p,*x;
x=new(ps);
p=f;
printf("\nNhap phan so can tim kiem tu/mau : ");
scanf("%d%d",&x->tu,&x->mau);
while(p!=NULL) if (p->tu==x->tu && p->mau==x->mau) return p;
else p=p->link;
return p;
}
ps *themdau(ps *f)
{
ps *p;
p=new(ps);
printf("\nNhap tu mau : ");
scanf("%d%d",&p->tu,&p->mau);
p->link=f;
return p;
}
ps *themcuoi(ps *f)
{
ps *p,*x;
p=f;
x=new(ps);
printf("\nNhap tu mau : ");
scanf("%d%d",&x->tu,&x->mau);
x->link=NULL;
while(p->link!=NULL) p=p->link;
if(f==NULL) return x; else{
p->link=x;
returnf;
}
}
// them x vao khong thay doi thu tu sap xep.
ps *themx(ps *f)
{
ps *p,*x;
x=new(ps);
printf("\nNhap tu mau : ");
scanf("%d%d",&x->tu,&x->mau);
if(f==NULL) {
x->link=NULL;
returnx;
}
if ((((float)f->tu/f->mau))>(((float)x->tu/x->mau))) {
x->link=f;
returnx;
}
p=f;
while (((float)(p->link)->tu/(p->link)->mau)<(((float)x->tu/x->mau)))
p=p->link;
x->link=p->link;
p->link=x;
return f;
}
void main()
{
int n;
ps *f=NULL,*l=NULL;
printf("\n1.Nhap so phan tu : ");
scanf("%d",&n);
f=nhap(f,l,n);
xemfifo(f);
printf("\n2.Them 1 phan tu vao dau :");
f=themdau(f);
xemfifo(f);
printf("\n3.Them 1 phan tu vao cuoi :");
f=themcuoi(f);
xemfifo(f);
printf("\n4. Sap xep :");
sapxep(f);
xemfifo(f);
printf("\n5. Them 1 so vao khong thay doi thu tu sap xep :");
f=themx(f);
xemfifo(f);
printf("\n6. Tim kiem :");
if(timkiem(f)!=NULL) printf("\n Tim thay co trong danh sach");
else printf("\n Khong tim thay trong danh sach");
getch();
}
No comments:
Post a Comment