Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- #include <windows.h>
- #include <bits/stdc++.h>
- using namespace std;
- typedef struct TNode
- {
- int nim;
- int nilai;
- TNode *next;
- TNode *prev;
- } TNode;
- TNode *head=NULL;
- void init() //inisialisasi awal
- {
- head = NULL;
- }
- int isEmpty() //mengecek kosong tidaknya Linked List
- {
- if(head == NULL)
- return 1;
- else
- return 0;
- }
- void insertBelakang(int value, int value1) //penambahan data di belakang
- {
- TNode *baru, *bantu;
- baru = new TNode; // pembentukan node baru
- baru->nim = value; // pemberian nilai terhadap data baru
- baru->nilai = value1;
- baru->next = NULL; // data pertama harus menunjuk ke NULL
- baru->prev = NULL; // data pertama harus menunjuk ke NULL
- if(isEmpty() == 1) // jika Linked List kosong
- {
- head = baru; // letakan baru pada head
- // tail = head; // head = tail
- head->next = NULL;
- head->prev = NULL;
- }
- else // jika Linked List sudah ada datanya
- {
- bantu=head;
- while(bantu ->next != NULL)
- {
- bantu = bantu ->next;
- }
- bantu ->next=baru;
- baru ->prev=bantu;
- }
- cout << "data masuk\n";
- }
- void deleteDepan() // penghapusan data di depan
- {
- TNode *hapus;
- if(isEmpty() == 0) // jika data belum kosong
- {
- if(head->next != NULL) // jika data tidak tinggal 1
- {
- hapus = head; // letakan hapus pada head
- head = head->next; // menggeser head (karena head harus ada)
- head->prev = NULL; // head harus menuju ke NULL
- delete hapus; //proses delete tidak boleh dilakukan jika node sedang ditunjuk oleh pointer
- }
- else // jika data tinggal head
- {
- head = NULL; // langsung diberi NULL saja
- }
- cout << "data terhapus\n";
- }
- else // jika data kosong
- cout << "data kosong\n";
- }
- void deleteBelakang() // penghapusan data di belakang
- {
- TNode *hapus, *bantu;
- if(isEmpty() == 0) // jika data belum kosong
- {
- if(head ->next != NULL) // jika data tidak tinggal 1
- {
- bantu = head;
- while(bantu->next->next!=NULL)
- {
- bantu = bantu->next;
- }
- hapus = bantu->next;
- bantu->next = NULL;
- delete hapus;
- }
- else
- {
- head = NULL;
- }
- cout << "data terhapus\n";
- }
- else // jika data kosong
- cout << "data kosong\n" ;
- }
- void deleteTengah(int cari) // penghapusan data di tengah
- {
- TNode *hapus, *bantu, *bantu2;
- hapus = head; // letakan hapus pada head
- while(hapus->nim != cari)
- {
- hapus = hapus->next; // menggeser hingga data cari
- }
- bantu2 = hapus->next; // mengkaitkan node sebelum dan sesudahnya
- bantu = hapus->prev;
- bantu->next = bantu2;
- bantu2->prev = bantu;
- cout << "data terhapus\n";
- delete hapus; //proses delete tidak boleh dilakukan jika node sedang ditunjuk oleh pointer
- }
- void cetak() // menampilkan semua data
- {
- TNode *bantu;
- bantu = head; // letakan bantu pada head
- int i=0;
- if(isEmpty() == 0)
- {
- cout << "No." << "\t-\t" << "NIM\t" << "\t-\t" << "Nilai" <<endl;
- do{
- i++;
- cout << i << "\t-\t" << bantu->nim << "\t-\t" << bantu->nilai << endl;
- bantu = bantu->next;
- }
- while (bantu != NULL);
- {
- cout <<endl;
- }
- }
- else // jika data sudah kosong
- cout << "data kosong";
- }
- int largestElement()
- {
- int max = INT_MAX;
- while (head != NULL)
- {
- if (max < head->nilai)
- max = head->nilai;
- head = head->next;
- }
- return max;
- }
- int smallestElement()
- {
- int min = INT_MIN;
- while (head != NULL)
- {
- if (min > head->nilai)
- min = head->nilai;
- head = head->next;
- }
- return min;
- }
- int main()
- {
- int key, nim;
- int nilai;
- do {
- system("cls");
- cout<< "\n\n ____MENU PROGRAM____ \n\n";
- cout<< " [1] Insert Belakang \n";
- cout<< " [2] Hapus Depan \n";
- cout<< " [3] Hapus Belakang \n";
- cout<< " [4] Hapus Tengah \n";
- cout<< " [5] Tampilkan Data \n";
- cout<< " [6] Tampilkan Nilai Minimum & Maksimum \n";
- cout<< " [7] EXIT \n";
- cout<< "\n Pilihan Anda [1-6] --> ";
- cin>> key;
- switch(key)
- {
- case 1:
- cout<< "\n Masukan NIM\t: ";
- cin>> nim;
- cout<< "\n Masukan Nilai\t: ";
- cin >> nilai;
- insertBelakang(nim, nilai);
- cetak();
- getch();
- system("cls");
- break;
- case 2:
- deleteDepan();
- cetak();
- getch();
- system("cls");
- break;
- case 3:
- deleteBelakang();
- cetak();
- getch();
- system("cls");
- break;
- case 4:
- cout << "Masukan NIM yang akan dihapus : ";
- cin >> nim;
- deleteTengah(nim);
- cetak();
- getch();
- system("cls");
- break;
- case 5:
- cout<< "\nData yang ada yaitu: \n";
- cetak();
- getch();
- system("cls");
- break;
- case 6:
- cout<< "\nNilai Maksimum yaitu: \n";
- largestElement();
- cout << "\nNilai Minimum yaitu: \n";
- smallestElement();
- getch();
- system("cls");
- break;
- case 7:
- system("EXIT");
- break;
- default:
- cout<<"Pilihan tidak tersedia";
- break;
- }
- cout << endl;
- }
- while(key != 7);
- } // ---> En Program Utama
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement