Penjelasan Program:
- Struktur Node berisi
nama
,jumlah
,next
, danprev
. - enqueue() menambahkan pembeli ke antrian.
- dequeue() memproses pembeli dari antrian dengan efek animasi.
- display() menampilkan seluruh antrian.
- clearQueue() menghapus semua antrian sebelum keluar.
- Menu Interaktif untuk memilih opsi.
Coba jalankan program ini di Dev-C++ dan lihat bagaimana antrian bekerja secara visual dengan efek Sleep()
. 🚀
#include <iostream>
#include <string>
#include <windows.h> // Untuk Sleep() agar terlihat animasi
using namespace std;
// Struktur Node
struct Node {
string nama;
int jumlah;
Node* next;
Node* prev;
};
Node* head = NULL;
Node* tail = NULL;
// Fungsi untuk menambahkan ke antrian
void enqueue(string nama, int jumlah) {
Node* newNode = new Node();
newNode->nama = nama;
newNode->jumlah = jumlah;
newNode->next = NULL;
newNode->prev = tail;
if (tail == NULL) {
head = newNode;
tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
cout << "\nMenambahkan: " << nama << " dengan jumlah " << jumlah << " ke antrian.\n";
Sleep(1000);
}
// Fungsi untuk menghapus dari antrian
void dequeue() {
if (head == NULL) {
cout << "\nAntrian kosong!\n";
return;
}
Node* temp = head;
cout << "\nMemproses pembelian: " << temp->nama << " (" << temp->jumlah << " barang)...\n";
Sleep(1500);
head = head->next;
if (head != NULL) {
head->prev = NULL;
} else {
tail = NULL;
}
delete temp;
cout << "Pembelian selesai!\n";
}
// Fungsi untuk menampilkan antrian
void display() {
if (head == NULL) {
cout << "\nAntrian kosong!\n";
return;
}
Node* temp = head;
cout << "\nAntrian Pembelian:\n";
while (temp != NULL) {
cout << "Nama: " << temp->nama << ", Jumlah: " << temp->jumlah << "\n";
temp = temp->next;
Sleep(500);
}
}
// Fungsi untuk mengosongkan antrian
void clearQueue() {
while (head != NULL) {
dequeue();
}
}
int main() {
int pilihan, jumlah;
string nama;
do {
system("cls");
cout << "==== Antrian Pembelian (Double Linked List) ====" << endl;
cout << "1. Tambah ke Antrian" << endl;
cout << "2. Proses Antrian" << endl;
cout << "3. Tampilkan Antrian" << endl;
cout << "4. Kosongkan Antrian" << endl;
cout << "5. Keluar" << endl;
cout << "Pilihan: ";
cin >> pilihan;
cin.ignore();
switch (pilihan) {
case 1:
cout << "Masukkan nama pembeli: ";
getline(cin, nama);
cout << "Masukkan jumlah barang: ";
cin >> jumlah;
enqueue(nama, jumlah);
break;
case 2:
dequeue();
break;
case 3:
display();
system("pause");
break;
case 4:
clearQueue();
break;
case 5:
cout << "Keluar dari program...\n";
clearQueue();
break;
default:
cout << "Pilihan tidak valid!";
}
} while (pilihan != 5);
return 0;
}
0 Response to "Program Dev C++, antrian pembelian double link list"
Post a Comment