Thao tác cơ bản về danh sách LIFO FIFO.

Friday, November 7, 2014
Thao tác cơ bản về danh sách LIFO FIFO.


#include <stdio.h>
#include <conio.h>
typedef struct node
{
      int info;
      node *link;
};
void xem(node *f)
{
      node *p;
      p=f;
      while (p!=NULL)
      {
            printf("%5d",p->info);
            p=p->link;
      }
}
node *nhaplifo(node *f,int n)
{
      node *p;
      for (int i=0;i<n;i++)
      {
            p=new(node);
            printf("\nMoi nhap so nguyen : ");
            scanf("%d",&p->info);
            p->link=f;
            f=p;
      }
      return f;
}
node *nhapfifo(node *f,node *l,int n)
{
      node *p;
      for (int i=0;i<n;i++)
      {
            p=new(node);
            printf("\nMoi nhap so nguyen : ");
            scanf("%d",&p->info);
            if (f==NULL){
                  f=p;
                  l=p;
            }
            else {
                  l->link=p;
                  l=p;
            }
      }
      return f;
}
node *seach(node *f,int x)
{
      node *p;
      p=f;
      while (p!=NULL&&p->info!=x) p=p->link;
      return p;
}
node *themdau(node *f)
{
      node *p;
      p=new(node);
      printf("\nMoi nhap so nguyen : ");
      scanf("%d",&p->info);
      p->link=f;
      return p;
}
node *themcuoi(node *f)
{
      node *p,*x;
      x=new(node);
      printf("\nMoi nhap so nguyen : ");
      scanf("%d",&x->info);
      x->link=NULL;
      if (f==NULL) return x;
      else {
            ////dua con tro p tro vao o cuoi danh sach////
          p=f;
          while (p->link!=NULL) p=p->link;
          /////////////////////////////////////////////
          p->link=x;
          return f;
      }    
}
node *xoadau(node *f)
{
      node *p;
      p=f->link;
      delete (f);
      return p;
}
node *xoacuoi(node *f)
{
      node *p,*x;
      if (f->link==NULL) {
            delete(f);
            return NULL;
      }
      p=f;
      while (p->link!=NULL){
            x=p;
            p=p->link;
      }
      x->link=NULL;
      delete(p);
      return f;
}
void sapxeptang(node *f)
{
      node *p1,*p2;
      int tg;
      p1=f;
      while (p1->link!=NULL){
            p2=p1->link;
            while (p2!=NULL){
                  if (p1->info>p2->info){
                        tg=p1->info;
                        p1->info=p2->info;
                        p2->info=tg;
                  }
                  p2=p2->link;
            }
            p1=p1->link;
      }
}
void sapxepgiam(node *f)
{
      node *p1,*p2;
      int tg;
      p1=f;
      while (p1->link!=NULL){
            p2=p1->link;
            while (p2!=NULL){
                  if (p1->info<p2->info){
                        tg=p1->info;
                        p1->info=p2->info;
                        p2->info=tg;
                  }
                  p2=p2->link;
            }
            p1=p1->link;
      }
}
void main()
{
      node *f=NULL;    //nếu danh sách fifo thì thay bằng  
                                    //             node *f=NULL,*l=NULL;
      int n;
      printf("\n  N =  ");
      scanf("%d",&n);
      f=nhaplifo(f,n); //nếu danh sách fifo thì thay bằng
             //                                 f=nhapfifo(f,l,n);
      printf("\nDanh sach vua nhap :");
      xem(f);
      printf("\nThem dau           :");
      f=themdau(f);
      printf("                    ");// lệnh in này căn chèn dấu cách cho xem thửng đẹp hơn
      xem(f);
      printf("\nThem Cuoi          :");
      f=themcuoi(f);
      printf("                    ");// lệnh in này căn chèn dấu cách cho xem thửng đẹp hơn
      xem(f);
      printf("\nSap Xep  tang      :");
      sapxeptang(f);
      xem(f);
      printf("\nSap xep Giam       :");
      sapxepgiam(f);
      xem(f);
      printf("\nTim kiem x=5         =>  ");
      if (seach(f,5)==NULL) printf("Khong tim thay x=5");
         else printf("Tim thay ");
      printf("\nXoa dau             ");
      f=xoadau(f);
      xem(f);
      printf("\nXoa cuoi            ");
      f=xoacuoi(f);
      xem(f);
      getch();
}


Chia sẻ bài viết ^^
Other post

All comments [ 0 ]


Your comments