Advertisement
putriagust

daftar nim dan nilai

Jul 11th, 2020
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.97 KB | None | 0 0
  1.  
  2. #include <iostream>
  3. #include <conio.h>
  4. #include <windows.h>
  5. #include <bits/stdc++.h>
  6.  
  7. using namespace std;
  8.  
  9. typedef struct TNode
  10. {
  11. int nim;
  12. int nilai;
  13. TNode *next;
  14. TNode *prev;
  15. } TNode;
  16. TNode *head=NULL;
  17.  
  18. void init() //inisialisasi awal
  19. {
  20. head = NULL;
  21. }
  22.  
  23. int isEmpty() //mengecek kosong tidaknya Linked List
  24. {
  25. if(head == NULL)
  26. return 1;
  27. else
  28. return 0;
  29. }
  30.  
  31. void insertBelakang(int value, int value1) //penambahan data di belakang
  32. {
  33. TNode *baru, *bantu;
  34. baru = new TNode; // pembentukan node baru
  35. baru->nim = value; // pemberian nilai terhadap data baru
  36. baru->nilai = value1;
  37. baru->next = NULL; // data pertama harus menunjuk ke NULL
  38. baru->prev = NULL; // data pertama harus menunjuk ke NULL
  39.  
  40. if(isEmpty() == 1) // jika Linked List kosong
  41. {
  42. head = baru; // letakan baru pada head
  43. // tail = head; // head = tail
  44. head->next = NULL;
  45. head->prev = NULL;
  46. }
  47. else // jika Linked List sudah ada datanya
  48. {
  49. bantu=head;
  50. while(bantu ->next != NULL)
  51. {
  52. bantu = bantu ->next;
  53. }
  54. bantu ->next=baru;
  55. baru ->prev=bantu;
  56. }
  57. cout << "data masuk\n";
  58. }
  59.  
  60. void deleteDepan() // penghapusan data di depan
  61. {
  62. TNode *hapus;
  63.  
  64. if(isEmpty() == 0) // jika data belum kosong
  65. {
  66. if(head->next != NULL) // jika data tidak tinggal 1
  67. {
  68. hapus = head; // letakan hapus pada head
  69. head = head->next; // menggeser head (karena head harus ada)
  70. head->prev = NULL; // head harus menuju ke NULL
  71. delete hapus; //proses delete tidak boleh dilakukan jika node sedang ditunjuk oleh pointer
  72. }
  73. else // jika data tinggal head
  74. {
  75. head = NULL; // langsung diberi NULL saja
  76. }
  77. cout << "data terhapus\n";
  78. }
  79. else // jika data kosong
  80. cout << "data kosong\n";
  81. }
  82.  
  83. void deleteBelakang() // penghapusan data di belakang
  84. {
  85. TNode *hapus, *bantu;
  86. if(isEmpty() == 0) // jika data belum kosong
  87. {
  88. if(head ->next != NULL) // jika data tidak tinggal 1
  89. {
  90. bantu = head;
  91. while(bantu->next->next!=NULL)
  92. {
  93. bantu = bantu->next;
  94. }
  95. hapus = bantu->next;
  96. bantu->next = NULL;
  97. delete hapus;
  98. }
  99. else
  100. {
  101. head = NULL;
  102. }
  103. cout << "data terhapus\n";
  104. }
  105. else // jika data kosong
  106. cout << "data kosong\n" ;
  107. }
  108.  
  109. void deleteTengah(int cari) // penghapusan data di tengah
  110. {
  111. TNode *hapus, *bantu, *bantu2;
  112. hapus = head; // letakan hapus pada head
  113.  
  114. while(hapus->nim != cari)
  115. {
  116. hapus = hapus->next; // menggeser hingga data cari
  117. }
  118.  
  119. bantu2 = hapus->next; // mengkaitkan node sebelum dan sesudahnya
  120. bantu = hapus->prev;
  121. bantu->next = bantu2;
  122. bantu2->prev = bantu;
  123. cout << "data terhapus\n";
  124. delete hapus; //proses delete tidak boleh dilakukan jika node sedang ditunjuk oleh pointer
  125. }
  126.  
  127. void cetak() // menampilkan semua data
  128. {
  129. TNode *bantu;
  130. bantu = head; // letakan bantu pada head
  131. int i=0;
  132.  
  133. if(isEmpty() == 0)
  134. {
  135. cout << "No." << "\t-\t" << "NIM\t" << "\t-\t" << "Nilai" <<endl;
  136. do{
  137. i++;
  138. cout << i << "\t-\t" << bantu->nim << "\t-\t" << bantu->nilai << endl;
  139. bantu = bantu->next;
  140. }
  141. while (bantu != NULL);
  142. {
  143. cout <<endl;
  144. }
  145. }
  146. else // jika data sudah kosong
  147. cout << "data kosong";
  148. }
  149.  
  150. int largestElement()
  151. {
  152. int max = INT_MAX;
  153.  
  154. while (head != NULL)
  155. {
  156. if (max < head->nilai)
  157. max = head->nilai;
  158. head = head->next;
  159. }
  160. return max;
  161. }
  162.  
  163. int smallestElement()
  164. {
  165. int min = INT_MIN;
  166.  
  167. while (head != NULL)
  168. {
  169. if (min > head->nilai)
  170. min = head->nilai;
  171.  
  172. head = head->next;
  173. }
  174. return min;
  175. }
  176.  
  177. int main()
  178. {
  179. int key, nim;
  180. int nilai;
  181. do {
  182. system("cls");
  183. cout<< "\n\n ____MENU PROGRAM____ \n\n";
  184. cout<< " [1] Insert Belakang \n";
  185. cout<< " [2] Hapus Depan \n";
  186. cout<< " [3] Hapus Belakang \n";
  187. cout<< " [4] Hapus Tengah \n";
  188. cout<< " [5] Tampilkan Data \n";
  189. cout<< " [6] Tampilkan Nilai Minimum & Maksimum \n";
  190. cout<< " [7] EXIT \n";
  191. cout<< "\n Pilihan Anda [1-6] --> ";
  192. cin>> key;
  193.  
  194. switch(key)
  195. {
  196. case 1:
  197. cout<< "\n Masukan NIM\t: ";
  198. cin>> nim;
  199. cout<< "\n Masukan Nilai\t: ";
  200. cin >> nilai;
  201. insertBelakang(nim, nilai);
  202. cetak();
  203. getch();
  204. system("cls");
  205. break;
  206. case 2:
  207. deleteDepan();
  208. cetak();
  209. getch();
  210. system("cls");
  211. break;
  212. case 3:
  213. deleteBelakang();
  214. cetak();
  215. getch();
  216. system("cls");
  217. break;
  218. case 4:
  219. cout << "Masukan NIM yang akan dihapus : ";
  220. cin >> nim;
  221. deleteTengah(nim);
  222. cetak();
  223. getch();
  224. system("cls");
  225. break;
  226. case 5:
  227. cout<< "\nData yang ada yaitu: \n";
  228. cetak();
  229. getch();
  230. system("cls");
  231. break;
  232. case 6:
  233. cout<< "\nNilai Maksimum yaitu: \n";
  234. largestElement();
  235. cout << "\nNilai Minimum yaitu: \n";
  236. smallestElement();
  237. getch();
  238. system("cls");
  239. break;
  240. case 7:
  241. system("EXIT");
  242. break;
  243. default:
  244. cout<<"Pilihan tidak tersedia";
  245. break;
  246. }
  247. cout << endl;
  248. }
  249. while(key != 7);
  250. } // ---> En Program Utama
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement