Linked List Pegawai Anak C Source Code Version 1.0 (Unstable)


  1. #include "PegawaiAnak.h"
  2.  
  3. void createList(LP *l)
  4. {
  5.     l->first = nil;
  6. }
  7.  
  8. adrPeg alokasiPeg(infoPeg x)
  9. {
  10.     adrPeg p = (adrPeg)malloc(sizeof(ElmtPeg));
  11.     p->info = x;
  12.     p->next = nil;
  13.     p->firstAnak = nil;
  14.     return p;
  15. }
  16.  
  17. adrAnak alokasiAnak(infoAnak x)
  18. {
  19.     adrAnak a = (adrAnak)malloc(sizeof(ElmtAnak));
  20.     a->infoA = x;
  21.     a->next = nil;
  22.     return a;
  23. }
  24.    
  25. infoPeg inputPeg()
  26. {
  27.     infoPeg p;
  28.     printf("\n Masukkan nama pegawai : ");
  29.     scanf("%s", p.Nama);
  30.     printf("\n Masukkan nomor ID Pegawai : ");
  31.     scanf("%d", &p.ID);
  32.     printf("\n Masukkan jabatan : ");
  33.     scanf("%s", p.jabatan);
  34.     printf("\n Masukkan gaji : ");
  35.     scanf("%f", &p.gajiPokok);
  36.     return p;
  37. }  
  38.    
  39. void inputVPeg(LP *l, infoPeg x)
  40. {
  41.     if (l->first == nil)
  42.     {
  43.         adrPeg ap=alokasiPeg(x);
  44.         ap->next = l->first;
  45.         l->first = ap;
  46.     }
  47.     else
  48.     {
  49.     adrPeg last;
  50.     last = l->first;
  51.         while (last->next != nil)
  52.         {
  53.             last = last->next;
  54.         }
  55.     adrPeg ap = alokasiPeg(x);
  56.     ap->next = last->next;
  57.     last->next = ap;
  58.     }
  59. }
  60.  
  61. infoAnak inputAnak()
  62. {
  63.          infoAnak a;
  64.          printf("\n Masukkan nama Anak : ");
  65.          scanf("%s", a.Nama);
  66.          printf("\n Masukkan umur Anak saat ini : ");
  67.          scanf("%d", &a.umur);
  68.          printf("\n Jenis Kelamin (L/P)");
  69.          scanf("%s", a.gender);
  70.          return a;        
  71. }
  72.  
  73. void inputVAnak(LP *l, infoAnak x, int pegID)
  74. {
  75.     adrPeg p;
  76.     adrAnak a = nil;
  77.     p = l->first;
  78.     while((p != nil) && (p->info.ID != pegID))
  79.         p = p->next;
  80.     if(p->info.ID != pegID)
  81.     {
  82.         printf("tidak ada pegawai berid:  %d",pegID);
  83.     }
  84.     else
  85.     {
  86.         if(p->firstAnak == nil)
  87.         {
  88.             a = alokasiAnak(x);
  89.             a->next = p->firstAnak;
  90.             p->firstAnak = a;
  91.         }
  92.         else
  93.         {
  94.             adrAnak last;
  95.             last = p->firstAnak;
  96.             while(last->next != nil)
  97.                 last = last->next;
  98.             a = alokasiAnak(x);
  99.             a->next= last->next;
  100.             last->next = a;
  101.         }
  102.     }
  103. }
  104.  
  105.  
  106.  
  107. void ListDataPeg(infoPeg x)
  108. {
  109.      printf("%s", x.Nama);
  110.      getch();
  111. }
  112.    
  113. void ListPegLengkap(LP l)
  114. {
  115.     adrPeg p;
  116.     adrAnak a;
  117.     p = l.first;
  118.     while(p != nil)
  119.     {
  120.         printf("\nNama Pegawai: %s ",p->info.Nama);
  121.         a = p->firstAnak;
  122.         if (a == nil)
  123.         {
  124.            printf("\nnggak punya anak cuy");                
  125.         }
  126.         else
  127.         {
  128.             printf("Mempunyai anak: ");
  129.             while(a != nil)
  130.            {
  131.                     printf("\nNama : %s ", a->infoA.Nama);
  132.                     printf("\nGender : %s ", a->infoA.gender);
  133.                     a = a->next;
  134.            }
  135.         }
  136.         getch();
  137.         p = p->next;
  138.     }
  139. }
  140.  
  141. void ListTunjAnak (LP l)
  142. {    
  143.      adrPeg ap;
  144.      adrAnak aa;
  145.      ap = l.first;
  146.      if (ap == nil)
  147.      {
  148.         printf("list kosong");      
  149.      }
  150.      else
  151.      {
  152.          while(ap != nil)
  153.          {
  154.            printf("\n %s", ap->info.Nama);
  155.            aa = ap->firstAnak;
  156.            if (aa == nil)
  157.               printf("\nPegawai tsb tidak mempunyai anak");
  158.            else
  159.            {
  160.                while(aa != nil)
  161.                {
  162.                    int usia = aa->infoA.umur;          
  163.                    if( usia <= 18)            
  164.                    {
  165.                        printf("\nNama Anak : %s", aa->infoA.Nama);    
  166.                        printf("\nUmur Anak : %s", aa->infoA.umur);
  167.                    }
  168.                    else
  169.                    {
  170.                    }
  171.                    aa = aa->next;
  172.                }    
  173.            }
  174.            ap = ap->next;
  175.          }
  176.      }
  177.      
  178. }
  179.  
  180. void ListPegNonKB(LP l)
  181. {
  182.      adrPeg ap;
  183.      adrAnak aa;
  184.      ap = l.first;
  185.      if (ap == nil)
  186.      {
  187.             printf("\nList pegawai kosong");
  188.      }
  189.      else
  190.      {
  191.              while (ap != nil)
  192.              {
  193.                    int breed = 0;
  194.                    aa = ap->firstAnak;
  195.                    while (aa != nil)
  196.                    {
  197.                          breed = breed + 1;
  198.                          aa = aa->next;
  199.                    }
  200.                    if (breed > 3)
  201.                    {
  202.                       printf("\nNama orang tua : %s", ap->info.Nama);
  203.                       printf("\nPegawai tersebut mempunyai anak lebih dari tiga");
  204.                       getch();
  205.                    }
  206.              ap=ap->next;
  207.              }  
  208.      printf("\nTidak ada pegawai no kb");
  209.      }
  210. }
  211.  
  212. void OrtuAnak(LP l, char nama[15])
  213. {
  214.      boolean found = false;
  215.      adrPeg ap;
  216.      adrAnak aa;
  217.      
  218.      ap = l.first;
  219.      while ((ap != nil) && (!found))
  220.      {
  221.            aa = ap->firstAnak;
  222.            while ((aa != nil) && (! found))
  223.            {
  224.                  if (strcmp(nama, aa->infoA.Nama) != 0)
  225.                  {
  226.                     aa = aa->next;
  227.                  }
  228.                     else
  229.                     {
  230.                         found = true;    
  231.                     }
  232.            }
  233.      }
  234.      if (!found)
  235.      {
  236.         ap = ap->next;
  237.      }
  238.      else if (found)
  239.           {
  240.              printf("\n Nama orang tuanya %s", ap->info.Nama);
  241.              getch();
  242.           }
  243. }
  244.  
  245.  

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s