Tonyputra

Linked List

Feb 2nd, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.70 KB | None | 0 0
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <cstdlib>
  4. using namespace std;
  5.  
  6. class Simpul
  7. {
  8. public:
  9.     string nama;
  10.     string alamat;
  11.     Simpul *Next;
  12. public:
  13.     Simpul(string nama, string alamat);
  14. };
  15.  
  16. class Senarai
  17. {
  18. public:
  19.     Simpul *pertama;
  20.  
  21. public:
  22.     Senarai();
  23.     ~Senarai();
  24. public:
  25.     int insert_first(string nama, string alamat);
  26.     int insert_last(string nama, string alamat);
  27.     int insert_after(string nama, string alamat, int ke);
  28.     void delete_first();
  29.     void delete_last();
  30.     void delete_after(int ke);
  31.     void tampil();
  32.  
  33.  
  34.  
  35. };
  36.  
  37. int main()
  38. {
  39.     char ulang;
  40.     Senarai *daftar = new Senarai;
  41.     int pilih;
  42.  
  43.     do
  44.     {
  45.         system("cls");
  46.         cout<<"+++++++++++++++++++++++++++++++++++LINKED LIST+++++++++++++++++++++++++++++++++"<<endl;
  47.         cout<<"1.Tambah Linked List"<<endl;
  48.         cout<<"2.Hapus Linked List"<<endl;
  49.         cout<<"3.Tampilkan Linked List"<<endl;
  50.         cout<<"4.Exit"<<endl;
  51.  
  52.         cout<<"Masukan Pilihan Anda : ";cin>>pilih;
  53.         switch(pilih)
  54.         {
  55.         case 1:
  56.             {
  57.                 system("cls");
  58.                 int pilih;
  59.                 string nama,alamat;
  60.                 int ke;
  61.                 cout<<"Pilih Jenis Insert Yang Anda Ingin kan :"<<endl;
  62.                 cout<<"1.Insert First"<<endl;
  63.                 cout<<"2.Insert Last"<<endl;
  64.                 cout<<"Masukan Pilihan : ";
  65.                 cin >>pilih;
  66.                 switch(pilih)
  67.                 {
  68.                 case 1:
  69.                     {
  70.                         cout<<"INSERT FIRST"<<endl;
  71.                         cout<<"masukan nama : ";cin >>nama;
  72.                         cout<<"masukan alamat : ";cin >>alamat;
  73.  
  74.                         daftar->insert_first(nama, alamat);
  75.                         break;
  76.                     }
  77.                 case 2:
  78.                     {
  79.                         cout<<"INSERT LAST"<<endl;
  80.                         cout<<"masukan nama : ";cin >>nama;
  81.                         cout<<"masukan alamat : ";cin >>alamat;
  82.                         daftar->insert_last(nama, alamat);
  83.                         break;
  84.                     }
  85.                 case 3:
  86.                     {
  87.                         cout<<"INSERT AFTER"<<endl;
  88.                         cout<<"masukan nama : ";cin>>nama;
  89.                         cout<<"masukan alamat : ";cin >>alamat;
  90.                         cout<<"masukan urutan : ";cin >>ke;
  91.                         daftar->insert_after(nama, alamat, ke);
  92.                         break;
  93.                     }
  94.                 }
  95.                 break;
  96.             }
  97.         case 2:
  98.             {
  99.                 system("cls");
  100.                 int ke,pilih;
  101.                 cout<<"Pilih Jenis Delete Yang Anda Ingin kan :"<<endl;
  102.                 cout<<"1.Delete First"<<endl;
  103.                 cout<<"2.Delete Last"<<endl;
  104.                 cout<<"2.Delete After"<<endl;
  105.                 cout<<"Masukan Pilihan : ";
  106.                 cin >>pilih;
  107.                 switch(pilih)
  108.                 {
  109.                 case 1:
  110.                     {
  111.                         cout<<"DELETE FIRST"<<endl;
  112.                         daftar->delete_first();
  113.                         break;
  114.                     }
  115.                 case 2:
  116.                     {
  117.                         cout<<"DELETE LAST"<<endl;
  118.                         daftar->delete_last();
  119.                         break;
  120.                     }
  121.                 case 3:
  122.                     {
  123.                         cout<<"DELETE AFTER"<<endl;
  124.                         cout<<"masukan nilai : ";cin >>ke;
  125.                         daftar->delete_after(ke);
  126.                         break;
  127.                     }
  128.                 }
  129.                 break;
  130.             }
  131.         case 3:
  132.             {
  133.                 daftar->tampil();
  134.                 break;
  135.             }
  136.         default:
  137.             MessageBox(NULL, "Sampai Jumpa", "Pesan", MB_OK);
  138.             exit(1);
  139.  
  140.         }
  141.  
  142.         cout<<"\nIngin kembali kemenu?[y]/[n] :";
  143.         cin >>ulang;
  144.     }while(ulang=='y' || ulang=='Y');
  145.     return 0;
  146. }
  147.  
  148. Simpul::Simpul(string nama, string alamat)
  149. {
  150.  
  151.     Simpul::nama = nama;
  152.     Simpul::alamat = alamat;
  153.     Next = NULL;
  154. }
  155.  
  156. int Senarai::insert_first(string nama, string alamat)
  157. {
  158.     Simpul *baru;
  159.     baru = new Simpul(nama, alamat);
  160.  
  161.     if(baru != NULL)
  162.     {
  163.         baru->Next = pertama;
  164.         pertama = baru;
  165.  
  166.         return (1);
  167.     }else
  168.         return (0);
  169. }
  170.  
  171. void Senarai::tampil()
  172. {
  173.     Simpul *ptr_data = pertama;
  174.  
  175.     while(ptr_data != NULL)
  176.     {
  177.         cout<<"["<<ptr_data->nama<<" : "<<ptr_data->alamat<<"]--->";
  178.  
  179.         if(ptr_data->Next == NULL)
  180.             break;
  181.         else
  182.             ptr_data = ptr_data->Next;
  183.     }
  184. }
  185.  
  186. Senarai::Senarai()
  187. {
  188.     pertama = NULL;
  189. }
  190.  
  191. Senarai::~Senarai()
  192. {
  193.     Simpul *del_pertama = pertama;
  194.     while(del_pertama != NULL)
  195.     {
  196.         del_pertama = pertama;
  197.          pertama = pertama->Next;
  198.  
  199.         delete del_pertama;
  200.     }
  201. }
  202.  
  203. Senarai::insert_last(string nama, string alamat)
  204. {
  205.     Simpul *last;
  206.     Simpul *pendahulu = pertama;
  207.     last = new Simpul(nama, alamat);
  208.  
  209.     while(pendahulu->Next != NULL)
  210.     {
  211.         pendahulu = pendahulu->Next;
  212.     }
  213.  
  214.     if(pertama)
  215.     {
  216.          pendahulu->Next = last;
  217.  
  218.          return (1);
  219.     }else{
  220.         return (0);
  221.     }
  222. }
  223.  
  224.  
  225. void Senarai::delete_first()
  226. {
  227.     Simpul *delete_first;
  228.     delete_first = pertama;
  229.     pertama = pertama->Next;
  230.     delete_first->Next = NULL;
  231.  
  232.     if(delete_first)
  233.     {
  234.         delete delete_first;
  235.     }
  236.  
  237. }
  238.  
  239. int Senarai::insert_after(string nama, string alamat, int ke)
  240. {
  241.     Simpul *p = pertama;
  242.     Simpul *q = new Simpul(nama, alamat);
  243.     if(pertama != NULL)
  244.     {
  245.         int i = 1;
  246.         while((p != NULL) && (i<ke)){
  247.             p = p->Next;
  248.             i++;
  249.         }
  250.  
  251.             if(p!= NULL)
  252.             {
  253.               q->Next = p->Next;
  254.               p->Next = q;
  255.  
  256.                return (1);
  257.             }
  258.             else
  259.                 return (0);
  260.     }
  261.         return (0);
  262. }
  263.  
  264. void Senarai::delete_after(int ke)
  265. {
  266.     Simpul *p = pertama;
  267.  
  268.     if(p!= NULL)
  269.     {
  270.         int i=1;
  271.         while(p!=NULL && i<ke)
  272.         {
  273.             p = p->Next;
  274.             i++;
  275.         }
  276.  
  277.         if(p != NULL)
  278.         {
  279.             Simpul *q = p->Next;
  280.             p->Next = q->Next;
  281.             q = NULL;
  282.  
  283.             delete q;
  284.  
  285.         }
  286.     }
  287. }
  288.  
  289. void Senarai::delete_last()
  290. {
  291.     Simpul *p = pertama;
  292.     Simpul *q;
  293.  
  294.     q = p;
  295.     p = q->Next;
  296.  
  297.     while(p->Next != NULL)
  298.     {
  299.         q = p;
  300.         p = q->Next;
  301.     }
  302.         q->Next = NULL;
  303.  
  304.     delete p;
  305. }
Add Comment
Please, Sign In to add comment