Bagosep

simple_singleLinkedList on C++

Apr 23rd, 2017
114
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. using namespace std;
  6.  
  7. struct node{
  8.     char npm[20];
  9.     char nama[20];
  10.     char alamat[20];
  11.     char jurusan[20];
  12.     char kelas[20];
  13.     node *next;
  14. };
  15.  
  16. node *depan,*belakang, *baru, *posisi, *bantu;
  17.  
  18. bool mulaiLinkedlist(){
  19.     if(depan==NULL){
  20.         return true;
  21.     }
  22.     else {
  23.         return false;
  24.     }
  25. }
  26.  
  27. void tambahdDepan(){
  28.     if(mulaiLinkedlist()){
  29.         belakang = baru;
  30.     }
  31.     else{
  32.         baru->next = depan;
  33.     }
  34.     depan=baru;
  35. }
  36.  
  37. void tambahdBelakang(){
  38.     if(mulaiLinkedlist()){
  39.         depan = baru;
  40.     }
  41.     else{
  42.         belakang->next = baru;
  43.     }
  44.     belakang=baru;
  45. }
  46.  
  47. void tambahTengah(){
  48.     int letak;
  49.     cout<<"\nMenyisipkan data ke posisi berapa = ";cin>>letak;
  50.     baru->next=NULL;
  51.     posisi=depan;
  52.     for(int i = 1; i<letak; i++){
  53.         bantu=posisi;
  54.         posisi=posisi->next;
  55.     }
  56.     bantu->next=baru;
  57.     baru->next=posisi;
  58. }
  59.  
  60. void tambahnama(){
  61.    char nama[20];
  62.  
  63.     cout<<"\nMenyisipkan setelah nama = ";cin.getline(nama, 20);
  64.     baru->next=NULL;
  65.     posisi = depan;
  66.     while(posisi!= NULL){
  67.     bantu=posisi;
  68.     posisi=posisi->next;
  69.         if((bantu==depan) && (strcmp(nama, bantu->nama)==0)){
  70.             bantu->next = baru;
  71.             baru->next = posisi;
  72.             break;
  73.         }
  74.         else if(strcmp(nama, bantu->nama)==0){
  75.             if(posisi==belakang){
  76.                 belakang->next = baru;
  77.                 belakang=baru;
  78.                 break;
  79.             }
  80.             else{
  81.                 bantu->next=baru;
  82.                 baru->next = posisi;
  83.                 break;
  84.             }
  85.         }
  86.     }
  87. }
  88.  
  89. void hapusDepan(){
  90.     posisi=depan;
  91.     depan=posisi->next;
  92.     posisi=NULL;
  93.     cout<<"Data Ilang";
  94. }
  95.  
  96. void hapusTengah(){
  97.     int input,letak;
  98.     cout<<"Masukan data ke posisi berapa = ";cin>>input;
  99.     posisi = depan;
  100.     letak = input;
  101.  
  102.     for(int i=1; i<letak; i++){
  103.         bantu = posisi;
  104.         posisi = posisi->next;
  105.     }
  106.     bantu->next=posisi->next;
  107.     posisi = NULL;
  108.     cout<<"\nData Terhapus";
  109. }
  110.  
  111. void hapusBelakang(){
  112.     posisi = depan;
  113.     while(posisi->next->next != NULL){
  114.         posisi = posisi->next;
  115.     }
  116.     belakang = posisi;
  117.     posisi->next = NULL;
  118.     cout<<"\nData Terhapus";
  119. }
  120.  
  121. void tambahData(){
  122.     baru = new node;
  123.     baru->next = NULL;
  124.     cin.ignore();
  125.     cout<<"Masukan Nama anda = ";cin.getline(baru->nama, 20);
  126.     cout<<"Masukan NPM anda = ";cin.getline(baru->npm, 20);
  127.     cout<<"Masukan Alamat anda = ";cin.getline(baru->alamat, 20);
  128.     cout<<"Masukan Jurusan anda = ";cin.getline(baru->jurusan, 20);
  129.     cout<<"Masukan Kelas anda = ";cin.getline(baru->kelas, 20);
  130. }
  131.  
  132. void tampilData(){
  133.     char lihat;
  134.     int data = 1;
  135.     if(mulaiLinkedlist()){
  136.         cout<<"\nData Kosong";
  137.     }
  138.     else{
  139.         posisi = depan;
  140.         while (posisi!=NULL){
  141.            // cout<<"\nData Ke posisi - "<<data;
  142.             cout<<"\nNama anda = "<<posisi->nama;
  143.             cout<<"\nNPM anda = "<<posisi->npm;
  144.             cout<<"\nAlamat anda = "<<posisi->alamat;
  145.             cout<<"\nJurusan anda = "<<posisi->jurusan;
  146.             cout<<"\nKelas anda = "<<posisi->kelas;
  147.         cout<<"\nLihat Posisi Selanjutnya = ";cin>>lihat;
  148.             if(lihat=='y'){
  149.                posisi = posisi->next;
  150.               // data++;
  151.             }
  152.             else{
  153.                 break;
  154.             }
  155.         }
  156.     }
  157.  
  158. }
  159.  
  160. int main()
  161. {
  162.     int menu;
  163.     char ulang;
  164.  
  165.     do{
  166.     mulaiLinkedlist();
  167.     cout<<"\nMenu";
  168.     cout<<"\n1. Tambah Depan";
  169.     cout<<"\n2. Tambah Tengah";
  170.     cout<<"\n3. Tambah Belakang";
  171.     cout<<"\n4. Hapus Depan";
  172.     cout<<"\n5. Hapus Tengah";
  173.     cout<<"\n6. Hapus Belakang";
  174.     cout<<"\n7. Tampil";
  175.     cout<<"\n8. Tambah setelah Nama";
  176.     cout<<"\nMasukan Pilihan anda = ";cin>>menu;
  177.     switch(menu){
  178.     case 1:
  179.         tambahData();
  180.         tambahdDepan();
  181.         break;
  182.     case 2:
  183.         tambahData();
  184.         tambahTengah();
  185.         break;
  186.     case 3:
  187.         tambahData();
  188.         tambahdBelakang();
  189.         break;
  190.     case 4:
  191.         hapusDepan();
  192.         break;
  193.     case 5:
  194.         hapusTengah();
  195.         break;
  196.     case 6:
  197.         hapusBelakang();
  198.         break;
  199.     case 7:
  200.         tampilData();
  201.         break;
  202.     case 8:
  203.         tambahData();
  204.         tambahnama();
  205.         break;
  206.     }
  207.     cout<<"\nUlang = Y";cin>>ulang;
  208.     system("cls");
  209.     }while(ulang=='y');
  210.  
  211.     return 0;
  212. }
RAW Paste Data