Advertisement
Guest User

DSL_Functions_FamiHug

a guest
Dec 15th, 2010
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.51 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement