Advertisement
khisby

Struct double linked list stack swap pointer file header

Jun 7th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.07 KB | None | 0 0
  1. //---------------------------------------------------------------->> File Headers
  2. #ifndef HEADERS_H_INCLUDED
  3. #define HEADERS_H_INCLUDED
  4.  
  5. #include <iostream>
  6.  
  7. using namespace std;
  8.  
  9. struct mahasiswa{
  10.     string nama;
  11.     int npm;
  12. };
  13.  
  14. struct node{
  15.     mahasiswa mhs;
  16.     node *next;
  17.     node *prev;
  18. };
  19.  
  20. node *baru,*bantu,*awal=NULL,*akhir=NULL;
  21.  
  22. bool cekAkhirNull(){
  23.     return akhir == NULL;
  24. }
  25.  
  26. bool cekAwalNull(){
  27.     return awal==NULL;
  28. }
  29.  
  30. #endif // HEADERS_H_INCLUDED
  31.  
  32. //---------------------------------------------------------------->> End of File Headers
  33. //---------------------------------------------------------------->> main.cpp
  34. #include <iostream>
  35. #include <stdlib.h>
  36. #include "headers.h"
  37.  
  38. using namespace std;
  39.  
  40. void push(){
  41.     baru = new node;
  42.     baru->next = NULL;
  43.     baru->prev = NULL;
  44.     cout << "Masukkan nama : ";
  45.     cin.sync();
  46.     getline(cin,baru->mhs.nama);
  47.     cout << "Masukkan NPM : ";
  48.     cin.sync();
  49.     cin >> baru->mhs.npm;
  50.  
  51.     if(cekAwalNull()){
  52.         awal=akhir=baru;
  53.     }else{
  54.         akhir->next = baru;
  55.         baru->prev = akhir;
  56.         akhir = baru;
  57.     }
  58. }
  59.  
  60. void pop(){
  61.     if(cekAkhirNull()){
  62.         cout << "Data kosong" << endl;
  63.         system("pause");
  64.     }else{
  65.         cout << "Data " << akhir->mhs.nama << " Telah dihapus " << endl;
  66.         system("pause");
  67.         if(akhir->prev == NULL){
  68.             awal=akhir=NULL;
  69.         }else{
  70.             bantu = akhir;
  71.             akhir = akhir->prev;
  72.             akhir->next = NULL;
  73.             delete bantu;
  74.         }
  75.     }
  76. }
  77.  
  78. void view(){
  79.     bantu = awal;
  80.     while(bantu!=NULL){
  81.         cout << "[" << bantu->mhs.nama << "," << bantu->mhs.npm << "] ";
  82.         bantu = bantu->next;
  83.     }
  84. }
  85.  
  86. void tukar(){
  87.     if(akhir->prev == awal){
  88.         cout << "Data tertukar : ";
  89.         bantu = akhir;
  90.         akhir->next = awal;
  91.         akhir->prev = NULL;
  92.  
  93.         awal->prev = akhir;
  94.         awal->next = NULL;
  95.  
  96.         akhir = awal;
  97.         awal = bantu;
  98.  
  99.         view();
  100.     }else if(awal == akhir){
  101.         cout << "Data hanya 1, tidak dapat di tukar " << endl;
  102.     }else{
  103.         cout << "Data tertukar : ";
  104.         bantu = akhir->prev;
  105.         bantu->prev->next = akhir;
  106.         akhir->prev = bantu->prev;
  107.         akhir->next = bantu;
  108.         bantu->prev = akhir;
  109.         bantu->next = NULL;
  110.         akhir = bantu;
  111.         view();
  112.     }
  113.     cout << endl;
  114.     system("pause");
  115. }
  116.  
  117. int main()
  118. {
  119.     int menu;
  120.     do{
  121.         system("cls");
  122.         view();
  123.         cout << endl;
  124.         cout << "Menu :" << endl;
  125.         cout << "1. Push" << endl;
  126.         cout << "2. Pop" << endl;
  127.         cout << "3. Tukar data terakhir dengan terakhir-1" << endl;
  128.         cout << "4. Keluar" << endl;
  129.         cout << "Masukkan menu : ";
  130.         cin >> menu;
  131.  
  132.  
  133.         if(menu == 1){
  134.             push();
  135.         }else if(menu == 2){
  136.             pop();
  137.         }else if(menu == 3){
  138.             tukar();
  139.         }
  140.     }while(menu != 4);
  141. }
  142.  
  143. //---------------------------------------------------------------->> End of main.cpp
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement