SHARE
TWEET

DSL_Functions_FamiHug

a guest Dec 15th, 2010 58 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Chuong trinh minh hoa danh sach lien ket don - DSL
  2. //by FamiHug@FAMILUG on 16.12.2010
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. typedef struct hehe{
  7.         int info;
  8.         struct hehe* link;
  9. } dsl;
  10.  
  11. dsl* Init_DSL(dsl*);
  12. dsl* Insert_Head(dsl*,int);
  13. dsl* Insert_Tail(dsl* l,int x);
  14. dsl* Delete_Head(dsl* l);
  15. dsl* Delete_Tail(dsl* l);
  16. void Print_DSL(dsl*);
  17.  
  18. int main()
  19. {
  20.         dsl* l=NULL;
  21.         int x,n=-1,i;
  22.         l=Init_DSL(l);
  23.        
  24.         //Nhap so phan tu
  25.         while(n<0)
  26.         {
  27.                 printf("So phan tu cua ds:");
  28.                 scanf("%d",&n);
  29.                 if(n<0) printf("So phan tu phai lon hon hoac bang 0, nhap lai\n");
  30.         else break;
  31.         }
  32.         //Nhap noi dung cac phan tu theo kieu them dau
  33.        
  34.         for(i=1;i<=n;i++)
  35.         {
  36.                 printf("x%d= ",i);
  37.                 scanf("%d",&x);
  38.                 l=Insert_Head(l,x);
  39.         }
  40.        
  41.         //In danh sach
  42.         Print_DSL(l);
  43.         //Them duoi
  44.         printf("Nhap phan tu them vao duoi: ");
  45.         scanf("%d",&x);
  46.         l=Insert_Tail(l,x);
  47.         //IN ds
  48.         Print_DSL(l);
  49.         //Xoa dau
  50.         l=Delete_Head(l);
  51.         l=Delete_Head(l);
  52.         //IN ds
  53.         Print_DSL(l);
  54.         l=Delete_Tail(l);
  55.         Print_DSL(l);
  56.         return 0;
  57. }
  58.  
  59. dsl * Init_DSL(dsl* l)
  60. {
  61.         return NULL;
  62. }
  63.  
  64. dsl* Insert_Head(dsl* l,int x)
  65. {
  66.         printf("Them dau: %d",x);
  67.         printf("\n");
  68.         dsl* p=(dsl*)malloc(sizeof(dsl));
  69.         p->info=x;
  70.         if(l==NULL)
  71.         {
  72.                 p->link=NULL;
  73.                 l=p;
  74.         }
  75.         else
  76.         {
  77.                 p->link=l;
  78.                 l=p;
  79.         }
  80.         return l;
  81. }
  82. dsl* Insert_Tail(dsl* l,int x)
  83. {
  84.         dsl* t=l;
  85.         dsl* p=(dsl*)malloc(sizeof(dsl));
  86.         p->info=x;
  87.         p->link=NULL;
  88.         printf("Them duoi: %d",x);
  89.         printf("\n");
  90.         if(t==NULL)
  91.         {
  92.                 l=p;           
  93.         }
  94.         else
  95.         {
  96.                 while(t->link!=NULL)
  97.                 {
  98.                         t=t->link;
  99.                 }              
  100.                 t->link=p;
  101.         }
  102.         return l;
  103. }
  104.  
  105. //Delete
  106.  
  107. dsl* Delete_Head(dsl* l)
  108. {
  109.         dsl* t=NULL;
  110.         printf("Xoa dau: ");
  111.         if(l==NULL) printf("Danh sach rong! Khong the xoa dau\n");
  112.         else
  113.         {
  114.                 if(l->link==NULL)
  115.                 {
  116.                         t=l;
  117.                         l=NULL;
  118.                         free(t);
  119.                 }
  120.                 else
  121.                 {
  122.                         t=l;
  123.                         l=l->link;
  124.                         free(t);
  125.                 }
  126.                 printf("Da xoa phan tu dau tien cua danh sach!\n");
  127.         }
  128.         return l;
  129. }
  130.                        
  131. dsl* Delete_Tail(dsl* l)
  132. {
  133.         printf("Xoa duoi: ");
  134.         if(l==NULL)
  135.         printf("Danh sach rong! Khong the xoa duoi.\n");
  136.         else
  137.         {
  138.                 dsl* t=l;
  139.                 if(l->link==NULL)//chi co 1 pt
  140.                 {
  141.                         t=l;
  142.                         l=NULL;
  143.                         free(t);
  144.                 }
  145.                 else
  146.                 {
  147.                         while(t->link->link!=NULL)
  148.                                 t=t->link;
  149.                         dsl* q=t->link;
  150.                         t->link=NULL;
  151.                         free(q);
  152.                 }
  153.                 printf("Da xoa phan tu duoi!\n");
  154.         }
  155.         return l;
  156. }
  157.  
  158. //Visit
  159. void Print_DSL(dsl* l)
  160. {
  161.         dsl* t=l;
  162.         if(t==NULL) printf("Danh sach: RONG \n");
  163.         else
  164.         {
  165.                 printf("Danh sach: ");
  166.                 while(t!=NULL)
  167.                 {
  168.                         printf("%2d",t->info);
  169.                         t=t->link;
  170.                 }
  171.                 printf("\n");
  172.         }
  173.         return;
  174. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top