Guest User

DSL_Functions_FamiHug

a guest
Dec 15th, 2010
90
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

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×