Advertisement
feriyan8

double linked list semua fungsi

May 20th, 2018
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.11 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct node {
  6.     char nama[30];
  7.     float nilai_tugas;
  8.     float nilai_quiz;
  9.     float nilai_ETS;
  10.     float nilai_EAS;
  11.     float nilai_Akhir;
  12.     int urut;
  13.     node *next;
  14.     node *prev;
  15. };
  16. node *baru, *head=NULL, *tail=NULL, *bantu;
  17. void cetak_data();
  18. void tambah_depan();
  19. void tambah_belakang();
  20. void tambah_data();
  21. void SisipData();
  22. void HapusTengah();
  23. void hapus_awal_node();
  24. void hapus_akhir_node();
  25.  
  26. int main()
  27. {
  28.    int pilih;
  29.    char EntriLagi = 'y';
  30.  
  31.    do{
  32.    cout<<endl;
  33.    cout<< "DATA MAHASISWA ITATS 2018\n"<<endl;
  34.    cout<< "1. Tambah Data "<<endl;
  35.    cout<< "2. Tambah depan "<<endl;
  36.    cout<< "3. Tambah Belakang "<<endl;
  37.    cout<< "4. Sisip DATA "<<endl;
  38.    cout<< "5. Cetak Data "<<endl;
  39.    cout<< "6. Hapus Data Tengah "<<endl;
  40.    cout<< "7. Hapus Data Awal "<<endl;
  41.    cout<< "8. Hapus Data Akhir "<<endl;
  42.    cout<< "Masukkan Pilihan Anda Mulai Dari Nomer 1-3 : ";
  43.    cin>>pilih;
  44.  
  45.    switch (pilih)
  46.    {
  47.         case 1 :
  48.           tambah_data();
  49.         break;
  50.  
  51.         case 2 :
  52.             tambah_depan();
  53.  
  54.         break;
  55.  
  56.         case 3 :
  57.             tambah_belakang();
  58.         break;
  59.         case 4 :
  60.             SisipData();
  61.             break;
  62.  
  63.         case 5 :
  64.             cetak_data();
  65.             break;
  66.         case 6 :
  67.             HapusTengah();
  68.             break;
  69.         case 7 :
  70.             hapus_awal_node();
  71.             break;
  72.         case 8 :
  73.             hapus_akhir_node();
  74.             break;
  75.    }
  76.    cout<<endl;
  77.    cout<< "Apakah Anda Ingin Kembali Ke Menu : [y/t]";
  78.    cin>>EntriLagi;
  79.    }while(EntriLagi == 'y');
  80. }
  81. void tambah_depan()
  82. {
  83.  
  84.     if(head==NULL)
  85.     {
  86.        cout<< "\nData Masih Kosong Harap Tambahkan Data Terlebih Dahulu"<<endl;
  87.     }
  88.     else
  89.     {
  90.          baru = new node;
  91.     cin.sync();
  92.     cout<< "Masukkan Nama : ";
  93.     cin.getline(baru->nama,30);
  94.     cout<< "Masukkan Nilai Tugas : ";
  95.     cin>>baru->nilai_tugas;
  96.     cout<< "Masukkan NIlai Quiz  : ";
  97.     cin>>baru->nilai_quiz;
  98.     cout<< "Masukkan Nilai ETS   : ";
  99.     cin>>baru->nilai_ETS;
  100.     cout<< "Masukkan Nilai EAS   : ";
  101.     cin>>baru->nilai_EAS;
  102.  
  103.     baru->next = NULL;
  104.     baru->prev = NULL;
  105.         baru->next = head;
  106.         head->prev = baru;
  107.         head=baru;
  108.     }
  109.     cout<<endl<<endl;
  110. }
  111. void cetak_data()
  112. {
  113.  
  114.     bantu=head;
  115.     if (head==NULL)
  116.     {
  117.         cout<<endl;
  118.         cout<< "Data Masih Kosong"<<endl;
  119.     }
  120.     else{
  121.     while(bantu!=NULL)
  122.     {
  123.         cout<< "=========================================="<<endl;
  124.         cout<< "Nama          : "<<bantu->nama<<endl;
  125.         cout<< "Nilai Tugas   : "<<bantu->nilai_tugas<<endl;
  126.         cout<< "Nilai Quiz    : "<<bantu->nilai_quiz<<endl;
  127.         cout<< "Nilai ETS     : "<<bantu->nilai_ETS<<endl;
  128.         cout<< "Nilai EAS     : "<<bantu->nilai_EAS<<endl;
  129.         bantu->nilai_Akhir = (bantu->nilai_tugas + bantu->nilai_quiz + bantu->nilai_ETS + bantu->nilai_EAS)/4;
  130.         cout<< "NIlai Akhir   : "<<bantu->nilai_Akhir<<endl;
  131.         cout<< "=========================================="<<endl;
  132.         {
  133.     if (bantu->nilai_Akhir>=80&&bantu->nilai_Akhir<=100){
  134.         cout << "NILAI ANDA  : A "<<endl;
  135.     }
  136.     else if (bantu->nilai_Akhir>=70&&bantu->nilai_Akhir<80){
  137.         cout << "NILAI ANDA  : B "<<endl;
  138.     }
  139.     else if (bantu->nilai_Akhir>=60&&bantu->nilai_Akhir<70){
  140.         cout << "NILAI ANDA  : C "<<endl;
  141.     }
  142.     else if (bantu->nilai_Akhir>=50&&bantu->nilai_Akhir<60){
  143.         cout << "NILAI ANDA  : D "<<endl;
  144.     }
  145.     else if (bantu->nilai_Akhir>=40&&bantu->nilai_Akhir<50){
  146.         cout << "NILAI ANDA  : E "<<endl;
  147.         }
  148.     else {
  149.         cout << "NILAI ANDA  : F "<<endl;
  150.     }
  151. }
  152.         bantu = bantu->next;
  153.     }
  154.     }
  155. }
  156. void tambah_belakang()
  157. {
  158.  
  159.     if(head==NULL)
  160. {
  161.  
  162.     cout<< "\nData Masih Kosong Harap Tambahkan Data Terlebih Dahulu"<<endl;
  163. }
  164.     else
  165. {
  166.      baru = new node;
  167.     cin.sync();
  168.     cout<< "Masukkan Nama : ";
  169.     cin.getline(baru->nama,30);
  170.     cout<< "Masukkan Nilai Tugas : ";
  171.     cin>>baru->nilai_tugas;
  172.     cout<< "Masukkan NIlai Quiz  : ";
  173.     cin>>baru->nilai_quiz;
  174.     cout<< "Masukkan Nilai ETS   : ";
  175.     cin>>baru->nilai_ETS;
  176.     cout<< "Masukkan Nilai EAS   : ";
  177.     cin>>baru->nilai_EAS;
  178.  
  179.     baru->next = NULL;
  180.     baru->prev = NULL;
  181.     tail->next=baru;
  182.     baru->prev=tail;
  183.     tail=baru;
  184. }
  185. cout<<endl<<endl;
  186. }
  187. void tambah_data()
  188. {
  189.     baru = new node;
  190.     cin.sync();
  191.     cout<< "Masukkan Nama : ";
  192.     cin.getline(baru->nama,30);
  193.     cout<< "Masukkan Nilai Tugas : ";
  194.     cin>>baru->nilai_tugas;
  195.     cout<< "Masukkan NIlai Quiz  : ";
  196.     cin>>baru->nilai_quiz;
  197.     cout<< "Masukkan Nilai ETS   : ";
  198.     cin>>baru->nilai_ETS;
  199.     cout<< "Masukkan Nilai EAS   : ";
  200.     cin>>baru->nilai_EAS;
  201.  
  202.     baru->next = NULL;
  203.     baru->prev = NULL;
  204.        if(head==NULL)
  205.     {
  206.         head = baru;
  207.         tail = baru;
  208.     }
  209.     else
  210.     {
  211.  
  212.         baru->next = head;
  213.         head->prev = baru;
  214.         head=baru;
  215.     }
  216.     cout<<endl<<endl;
  217. }
  218. void SisipData()
  219. {
  220.   node *baru, *bantu;
  221.   int posisi_sisip;
  222.   if(head != NULL)
  223.   {
  224.  
  225.  
  226.     cout<<"Akan Disisipkan setelah Data Ke ? : ";
  227.     cin>>posisi_sisip;
  228.     baru =new node;
  229.    bantu=head;
  230.  
  231.     for(int i=1;i<posisi_sisip-1;i++) {
  232.       if(bantu->next != NULL)
  233.         bantu=bantu->next;
  234.       else
  235.         break;
  236.     }
  237.     cin.sync();
  238.     cout<< "Masukkan Nama : ";
  239.     cin.getline(baru->nama,30);
  240.     cout<< "Masukkan Nilai Tugas : ";
  241.     cin>>baru->nilai_tugas;
  242.     cout<< "Masukkan NIlai Quiz  : ";
  243.     cin>>baru->nilai_quiz;
  244.     cout<< "Masukkan Nilai ETS   : ";
  245.     cin>>baru->nilai_ETS;
  246.     cout<< "Masukkan Nilai EAS   : ";
  247.     cin>>baru->nilai_EAS;
  248.   baru->next=bantu->next;
  249.   bantu->next=baru;
  250.   }
  251.   else
  252.   {
  253.    cout<< "\nData Masih Kosong Harap Tambahkan Data Terlebih Dahulu"<<endl;
  254.   }
  255. }
  256. void HapusTengah()
  257. {
  258.   int banyakdata,posisi_hapus,poshapus;
  259.   node *hapus, *bantu;
  260.   if(head != NULL)
  261.   {
  262.     cout<<" Akan dihapus pada data ke : ";
  263.     cin>>posisi_hapus;
  264.     banyakdata=1;
  265.     bantu=head;
  266.     while(bantu->next != NULL)
  267.     {
  268.       bantu=bantu->next;
  269.       banyakdata++;
  270.     }
  271.     if((posisi_hapus<1)||(posisi_hapus>banyakdata))
  272.     {
  273.       cout<<"Belum ada data !! masukkan Data dula aja...\n";
  274.     }
  275.     else
  276.     {
  277.       bantu=head;
  278.       poshapus=1;
  279.       while(poshapus<(posisi_hapus-1))
  280.       {
  281.         bantu=bantu->next;
  282.         poshapus++;
  283.       }
  284.       hapus=bantu->next;
  285.       bantu->next=hapus->next;
  286.       delete hapus;
  287.     }
  288.  }
  289.  else
  290.     cout<<"Data Masih kosong, tidak bisa hapus data dari tengah! ";
  291. }
  292. void hapus_awal_node()
  293. {
  294.   node *temp;
  295.   temp = head;
  296.   head = head->next;
  297.   delete temp;
  298. }
  299.  
  300. void hapus_akhir_node()
  301. {
  302.   node *temp1, *temp2;
  303.   if (head == NULL)
  304.     cout << "List kosong!" << endl;
  305.   else
  306.   {
  307.     temp1 = head;
  308.     if (temp1->next == NULL)
  309.     {
  310.       delete temp1;
  311.       head = NULL;
  312.     }
  313.     else
  314.     {
  315.       while (temp1->next != NULL)
  316.       {
  317.         temp2 = temp1;
  318.         temp1 = temp1->next;
  319.       }
  320.       delete temp1;
  321.       temp2->next = NULL;
  322.     }
  323.  
  324.    }
  325. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement