 dungnv
» dslkctdlgt
» 1.1: tạo và xem danh sách FIFO gồm các phân số. thực hiện thao tác sắp xếp, tìm kiếm, thêm đầu, thêm cuối, thêm phân số x sao cho không làm thay đổi thứ tự sắp xếp.
dungnv
» dslkctdlgt
» 1.1: tạo và xem danh sách FIFO gồm các phân số. thực hiện thao tác sắp xếp, tìm kiếm, thêm đầu, thêm cuối, thêm phân số x sao cho không làm thay đổi thứ tự sắp xếp.
1.1: tạo và xem danh sách FIFO gồm các phân số. thực hiện thao tác sắp xếp, tìm kiếm, thêm đầu, thêm cuối, thêm phân số x sao cho không làm thay đổi thứ tự sắp xếp.
Thursday, November 27, 2014
// cac thao tac tren danh sach FIFO gom cac phan so; 
#include <stdio.h>
#include <conio.h>
typedef struct ps
{
      int
tu,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;
            return
f;
      }
}
// 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;
            return
x;
      }
      if ((((float)f->tu/f->mau))>(((float)x->tu/x->mau))) {
            x->link=f;
            return
x;
      }
      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();
}
 
 
 
All comments [ 0 ]
Your comments