Loading

ll4.cpp

  1. #include <iostream>
  2. #include <conio.h>
  3. #include <string.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. using namespace std;
  8. int pil;
  9. int tdkblhsm();
  10. void pilih();
  11. void buat_baru();
  12. int tambah();
  13. void hapus();
  14. void tampil();
  15. void Cari();
  16.  
  17. struct simpul
  18. {
  19.     char nama [20];
  20.     long int nim;
  21.     struct simpul *next;
  22. } mhs, *baru, *awal=NULL, *akhir=NULL,*hps, *bantu, *p;
  23.  
  24. int x=0;
  25.  
  26. int tdkblhsm(int cari)
  27. {
  28.     struct simpul *baru;
  29.     int ketemu=0;
  30.  
  31.     if(awal==NULL)
  32.      ketemu=0;
  33.     else
  34.     {
  35.       baru=awal;
  36.       while(baru!=NULL)
  37.       {
  38.          if(cari==baru->nim)
  39.             {
  40.               ketemu=1;
  41.               break;
  42.             }
  43.          baru=baru->next;
  44.       }
  45.     }
  46.     return ketemu;
  47.  
  48. }
  49.  
  50. int main()
  51. {
  52.     do
  53.     {
  54.     system("cls");
  55.         cout<<"MENU SINGLE LINKEDLIST"<<endl;
  56.         cout<<"1. Tambahkan Data ke Dalam List "<<endl;
  57.         cout<<"2. Hapus Data"<<endl;
  58.         cout<<"3. Pencarian Data"<<endl;
  59.         cout<<"4. Tampilkan"<<endl;
  60.         cout<<"5. Selesai"<<endl;
  61.         cout<<"Pilihan Anda : ";
  62.         cin>>pil;
  63.         pilih();
  64.     } while(pil!=5);
  65.     return 0;
  66. }
  67.  
  68.  
  69. void pilih()
  70. {
  71.     if(pil==1)
  72.         tambah();
  73.     else if(pil==2)
  74.         hapus();
  75.       else if(pil==3)
  76.         Cari();
  77.       else if(pil==4)
  78.         tampil();
  79.     else
  80.         cout<<"selesai";
  81. }
  82.  
  83. int tambah()
  84. {
  85.     baru=(struct simpul *)malloc(sizeof(struct simpul));
  86.     cout<<"input nim   : ";cin>>baru->nim;
  87.     if(tdkblhsm(baru->nim)!=0)
  88.     {
  89.      cout<<"NIM sudah ada, silahkan input NIM yang lain";
  90.      getch();
  91.      return 0;
  92.     }
  93.     cout<<"input nama  : ";cin>>baru->nama;
  94.     baru->next=NULL;
  95.  
  96.     if(awal==NULL)
  97.     {
  98.         awal=baru;
  99.         akhir=baru;
  100.     }
  101.     //jika data hanya 1
  102.     else if (baru->nim < awal->nim)
  103.     {
  104.         baru->next=awal;
  105.         awal=baru;
  106.     }
  107.     else
  108.     {
  109.         bantu=awal;
  110.         while(bantu->next!=NULL && baru->nim > bantu->next->nim)
  111.         {
  112.             bantu=bantu->next;
  113.         }
  114.         baru->next=bantu->next;
  115.         bantu->next=baru;
  116.     }
  117.   tampil();
  118. }
  119.  
  120. void hapus()
  121. {
  122.     int nim_cari;
  123.     struct simpul *bantu1;
  124.     if (awal==NULL)
  125.         cout<<"Simpul Kosong";
  126.     else
  127.     {
  128.         cout<<" Masukan NIM yang akan dihapus : ";
  129.         cin>>nim_cari;
  130.         bantu=awal;
  131.         {
  132.             while(bantu!=NULL && bantu->nim!=nim_cari)
  133.                 bantu=bantu->next;
  134.             if (bantu==NULL)
  135.                 cout<<"Data tidak ditemukan";
  136.             else if (bantu==awal)
  137.             {
  138.                 awal=awal->next;
  139.                 free(bantu);
  140.             }
  141.             else if (bantu==akhir)
  142.             {
  143.                 bantu=awal;
  144.                 while (bantu1->next!=akhir)
  145.                     bantu1=bantu1->next;
  146.                 akhir=bantu1;
  147.                 akhir->next=NULL;
  148.                 free(bantu);
  149.             }
  150.             else
  151.             {
  152. bantu1=awal;
  153.             while(bantu1->next!=bantu)
  154.             bantu1=bantu1->next;
  155. bantu1->next=bantu->next;
  156.             free (bantu);
  157.         }
  158.     }
  159.     }
  160.     getch();
  161. }
  162.  
  163. void tampil()
  164. {
  165.      if (awal==NULL)
  166.           cout<<"Kosong";
  167.      else
  168.      {
  169.          bantu=awal;
  170.          while(bantu!=NULL)
  171.          {
  172.             cout<<"nim : "<<bantu->nim<<"\t";
  173.             cout<<"nama : "<<bantu->nama<<"\n";
  174.             bantu=bantu->next;
  175.          }
  176.      }
  177.      getch();
  178. }
  179.  
  180. void Cari()
  181. {
  182.         printf("\nInput NIM : "); scanf("%s", Cari);
  183.  
  184.     p = awal;
  185.  
  186.     while (p != NULL) {
  187.     if ((p->nim, Cari) == 0) {
  188.         printf("\n\n------------------------------------------\n");
  189.         printf("......................searching \n");
  190.         printf("Name was found : %s", p->nama);
  191.         printf("\n------------------------------------------\n");                               }
  192.  
  193.     p = p->next;}
  194.     if (p == NULL) {
  195.         printf("\nData tidak ditemukan ! \n\n");
  196.     }
  197. }