Bagosep

double_linkedlist

Apr 21st, 2017
104
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. struct node {
  7.     char nama[20];
  8.     char jenis_vcd[20];
  9.     char judul_vcd[20];
  10.     int tanggal_sewa;
  11.     int tanggal_pengembalian;
  12.     int biaya_sewa;
  13.     int denda;
  14.     int total;
  15.     node *next;
  16.     node *prev;
  17. };
  18.  
  19. node *depan, *belakang, *bantu, *posisi, *hapus, *baru, *tujuan;
  20.  
  21. bool kosong(){
  22.     if(depan==NULL){
  23.         return true;
  24.     }
  25.     else{
  26.         return false;
  27.     }
  28. }
  29.  
  30. void tambahData(){
  31.     baru = new node;
  32.     baru->next=NULL;
  33.     baru->prev=NULL;
  34.     cin.ignore();
  35.     cout<<"Masukan nama penyewa = ";cin.getline(baru->nama, 20);
  36.     cout<<"Masukan jenis VCD yang disewa = ";cin.getline(baru->jenis_vcd, 20);
  37.     cout<<"Masukan judul VCD yang disewa = ";cin.getline(baru->judul_vcd, 20);
  38.     cout<<"Masukan tanggal sewa = ";cin>>baru->tanggal_sewa;
  39.     cout<<"Masukan tanggal pengembalian sewa = ";cin>>baru->tanggal_pengembalian;
  40.     cout<<"Masukan  biaya sewa = ";cin>>baru->biaya_sewa;
  41. }
  42.  
  43. void tambahDepan(){
  44.     if(kosong()){
  45.         belakang=baru;
  46.     }
  47.     else{
  48.         baru->next=depan;
  49.         depan->prev=baru;
  50.     }
  51.     depan=baru;
  52. }
  53.  
  54. void tambahBelakang(){
  55.     if(belakang==NULL){
  56.          depan=baru;
  57.     }
  58.     else{
  59.         belakang->next=baru;
  60.         baru->prev=belakang;
  61.     }
  62.     belakang=baru;
  63. }
  64. void tambahTengah(){
  65.         int letak;
  66.         cout<<"\nMenyisipkan data ke posisi berapa = ";cin>>letak;
  67.         baru->next=NULL;
  68.         posisi=depan;
  69.         for(int i = 1; i<letak; i++){
  70.             bantu=posisi;
  71.             posisi=posisi->next;
  72.         }
  73.         bantu->next=baru;
  74.         baru->prev=bantu;
  75.  
  76.         baru->next=posisi;
  77.         posisi->prev=baru;
  78. }
  79. void hapusDepan(){
  80.     hapus=depan;
  81.     depan->next->prev=NULL;
  82.     depan=hapus->next;
  83.     hapus=NULL;
  84.     cout<<"\nData Terhapus";
  85. }
  86. void hapusBelakang(){
  87.     hapus=belakang;
  88.     belakang=hapus->prev;
  89.     belakang->next=NULL;
  90.     hapus=NULL;
  91.     cout<<"\nData Terhapus";
  92. }
  93. void hapusTengah(){
  94.     int letak;
  95.  
  96.     cout<<"\ndata ke posisi berapa yang ingin dihapus = ";cin>>letak;
  97.     hapus=depan;
  98.     while(hapus->next->next!=NULL){
  99.         bantu=hapus;
  100.         hapus=hapus->next;
  101.     }
  102.     posisi=hapus;
  103.     tujuan = hapus->next;
  104.     bantu->next=tujuan;
  105.     tujuan->prev=bantu;
  106.     hapus=NULL;
  107.     cout<<"Data Terhapus";
  108. }
  109. void tampil(){
  110.     posisi=depan;
  111.     char lihat;
  112.  
  113.     while(posisi!=NULL){
  114.         cout<<"\nNama penyewa = "<<posisi->nama;
  115.         cout<<"\nJenis VCD yang disewa = "<<posisi->jenis_vcd;
  116.         cout<<"\nJudul VCD yang disewa = "<<posisi->judul_vcd;
  117.         cout<<"\nTanggal sewa = "<<posisi->tanggal_sewa;
  118.         cout<<"\nTanggal pengembalian sewa = "<<posisi->tanggal_pengembalian;
  119.         cout<<"\nTanggal biaya sewa = "<<posisi->biaya_sewa;
  120.  
  121.         cout<<"\nLihat data Sebelum atau selanjutnya ? [p/n] ";cin>>lihat;
  122.         if(lihat=='p'){
  123.             posisi=posisi->prev;
  124.         }
  125.         else if(lihat=='n'){
  126.             posisi=posisi->next;
  127.         }
  128.         else{
  129.             break;
  130.         }
  131.     }
  132. }
  133.  
  134.  
  135.  
  136. int main()
  137. {
  138.     int menu;
  139.     char ulang;
  140.  
  141.     do{
  142.         cout<<"\nMenu";
  143.         cout<<"\n1. Tambah depan ";
  144.         cout<<"\n2. Tambah belakang ";
  145.         cout<<"\n3. Tambah tengah ";
  146.         cout<<"\n4. hapus depan ";
  147.         cout<<"\n5. hapus belakang ";
  148.         cout<<"\n6. hapus tengah ";
  149.         cout<<"\n7. Tampil data ";
  150.         cout<<"\nMasukan pilihan anda = ";cin>>menu;
  151.         switch(menu){
  152.         case 1 :
  153.             tambahData();
  154.             tambahDepan();
  155.             break;
  156.         case 2 :
  157.             tambahData();
  158.             tambahBelakang();
  159.             break;
  160.         case 3:
  161.             tambahData();
  162.             tambahTengah();
  163.             break;
  164.         case 4:
  165.             hapusDepan();
  166.             break;
  167.         case 5:
  168.             hapusBelakang();
  169.             break;
  170.         case 6:
  171.             hapusTengah();
  172.             break;
  173.         case 7:
  174.             tampil();
  175.             break;
  176.         }
  177.     cout<<"\nApakah anda ingin mengulang = ";cin>>ulang;
  178.     system("cls");
  179.     }while(ulang=='y');
  180.  
  181.     return 0;
  182. }
RAW Paste Data