ANTRIAN
• Antrian ( queue ) : Struktur data yang mempunyai
sifat, data yang masuk duluan akan diproses lebih
dulu juga.←mempunyai sifat FIFO.
• Di dalam antrian dikenal istilah depan dan belakang,
seperti gambar berikut :
Kode :antrian1.java
// -------------------------------------------
// Contoh Antrian Menggunakan array
// -------------------------------------------
// Masukkan 9 nama
daftar.insert("Aminudin");
daftar.insert("Bahtiar Rivai");
daftar.insert("Cita Citata");
daftar.insert("Dul Sumbang");
daftar.insert("Engel Elga");
daftar.insert("Farah Nurlaela");
daftar.insert("Galih");
daftar.insert("Harwantyoko");
daftar.insert("Indah Kusuma");
class Antrian {
private String[] data;
private int depan, belakang;
private int maksElemen;
// Konstruktor
public Antrian(int ukuran) {
depan = 0;
belakang = 0;
maksElemen = ukuran;
data = new String[ukuran];
}
if (posisiBelakang == depan) {
System.out.println("Antrian penuh.");
System.out.println(x + " tidak dimasukkan.");
}
else {
belakang = posisiBelakang;
// Masukkan data
data[belakang] = x;
}
}
if (depan == maksElemen - 1)
depan = 0;
else
depan = depan + 1;
return data[depan];
}
Outputnya:
(TUGAS 2 (Tugas Kelompok) NO.1 : Buat dengan Java/Python,
suatu program dinamis yang sejenis)
3.5. Antrian dengan kelasArrayQueue
• ArrayDeque : Kelas yang disediakan oleh java untuk menangani
antrian dengan banyak data tak terbatas.
• Penggunaan kelas ArrayDeque , harus menyertakan perintah :
import java.until.ArrayDeque;
• Deklarasi obyek dengan kelas ArrayDeque dilakukan dengan cara
sbb:
ArrayDeque<String> daftar = new ArrayDeque<String>();
• <String> : Tipe elemen yang disimpan di obyek, bisa juga <Int> dsb.
• Beberapa metode yang tersedia di kelas ArrayDeque :
Metode Keterangan
add(elemen) Menambahkan elemen di akhir antrian
addFirst(elemen) Menambahkan elemen di awal antrian
addLast(elemen) Menambahkan elemen di akhir antrian
clear() Menghapus semua elemen di antrian
contains(objek) Menghasilkan true, kalau antrian mengandung
objek
getFirst() Menghasilkan elemen yang berada di depan tanpa
menghapuskannya
getLast() Menghasilkan elemen yang berada di akhir tanpa
menghapuskannya
isEmpty() Menghasilkan true kalau antrian kosong
poll() Menghapus elemen di bagian depan dan elemen
tersebut menjadi nilai baliknya. Nilai balik=null
jika antrian kosong
pollLast() Menghapus elemen di bagian belakang dan elemen
tersebut menjadi nilai baliknya. Nilai balik=null
jika antrian kosong
remove() Menghapus elemen di bagian depan dan elemen
tersebut menjadi nilai baliknya.
removeLast() Menghapus elemen di bagian belakang dan elemen
tersebut menjadi nilai baliknya
size() Menghasilkan jumlah elemen di antrian ( bertipe
integer)
// -------------------------------------------
// Contoh Antrian Menggunakan kelas ArrayDeque
// -------------------------------------------
import java.util.ArrayDeque;
// Masukkan 9 nama
daftar.add("Aminudin");
daftar.add("Bahtiar Rivai");
daftar.add("Cita Citata");
daftar.add("Dul Sumbang");
daftar.add("Engel Elga");
daftar.add("Farah Nurlaela");
daftar.add("Galih");
daftar.add("Harwantyoko");
daftar.add("Indah Kusuma");
// Kosongkan isi Antrian dan tampilkan
System.out.println("Isi Antrian:");
while (!daftar.isEmpty()) {
String nama = daftar.remove();
System.out.println(nama);
}
}
Outputnya :
import java.util.Scanner;
do {
pilihan = kota.pilihMenu();
switch (pilihan) {
case '1':
System.out.print("Penambahan data.\nKota: ");
kotaX = kbd.nextLine();
if (!kota.tambahData(kotaX))
System.out.println(
"Gagal menambah data. Wadah penuh");
break;
case '2':
System.out.print("Penghapusan data.\nKota: ");
kotaX = kbd.nextLine();
if (!kota.hapusData(kotaX))
System.out.println(
"Data yang akan dihapus tidak ditemukan");
break;
case '3':
kota.tampilkanData();
break;
case '4':
System.out.println("*** Selesai");
}
}
while (pilihan != '4');
class ArrayData {
final int MAKSDATA = 10;
// Konstruktor
public ArrayData() {
jumKota = 0;
}
if (baris.isEmpty())
pilihan = '0';
else
pilihan = baris.charAt(0);
} while (pilihan < '1' || pilihan > '4');
return pilihan;
}
if (j != (jumKota-1))
System.out.print(" - "); // Beri pemisah antarkota
}
// Menambahkan data
public boolean tambahData(String kotaBaru) {
if (jumKota == MAKSDATA) {
System.out.println( "Array sudah penuh" );
return false; // Gagal menambahkan kota
}
if (posisi == -1) {
// Sisipkan di belakang
kota[jumKota] = kotaBaru;
jumKota = jumKota + 1;
}
else { // Kalau posisi tidak sama dengan -1
// Sisipkan pada posisi
// a. Geser dulu
for (int j = jumKota-1; j >= posisi; j--)
kota[j + 1] = kota[j];
// b. Sisipkan
kota[posisi] = kotaBaru;
jumKota = jumKota + 1;
}
return true;
}
// Menghapus data
public boolean hapusData(String kotaX) {
// Cari posisi penghapusan
int posisi = -1;
for (int j = 0; j <jumKota; j++) {
if (kotaX.compareTo(kota[j]) == 0) { // kalau sama
posisi = j;
break;
}
}
// Penghapusan kota
if (posisi == (jumKota-1)) {
// Hapus di bagian akhir
jumKota = jumKota - 1;
}
else { // Kalau posisi tidak sama
// dengan yang terakhir
return true;
}
}
Outputnya:
Isi array:
Medan - Pontianak - Surabaya
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 1
Penambahan data.
Kota: Depok
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 3
Isi array:
Depok - Medan - Pontianak - Surabaya
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 1
Penambahan data.
Kota: Malang
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 3
Isi array:
Depok - Malang - Medan - Pontianak - Surabaya
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 2
Penghapusan data.
Kota: Medan
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 1
Penambahan data.
Kota: Papua
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 3
Isi array:
Depok - Malang - Papua - Pontianak - Surabaya
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 4
*** Selesai
// ----------------------------------------------
// Contoh operasi penghapusan dan penyisipan data
// menggunakan ArrayList
// ----------------------------------------------
import java.util.Scanner;
import java.util.ArrayList;
do {
pilihan = kota.pilihMenu();
switch (pilihan) {
case '1':
System.out.print("Penambahan data.\nKota: ");
kotaX = kbd.nextLine();
if (!kota.tambahData(kotaX))
System.out.println(
"Gagal menambah data. Wadah penuh");
break;
case '2':
System.out.print("Penghapusan data.\nKota: ");
kotaX = kbd.nextLine();
if (!kota.hapusData(kotaX))
System.out.println(
"Data yang akan dihapus tidak ditemukan");
break;
case '3':
kota.tampilkanData();
break;
case '4':
System.out.println("*** Selesai");
}
}
while (pilihan != '4');
class ArrayData {
private ArrayList<String> kota = new ArrayList<String>();
private int jumKota;
// Konstruktor
public ArrayData() {
jumKota = 0;
}
do {
System.out.println("Menu:" );;
System.out.println("1. Tambah data" );;
System.out.println("2. Hapus data" );;
System.out.println("3. Tampilkan data" );;
System.out.println("4. Selesai" );;
System.out.print(
"Pilihan (1, 2, 3, atau 4 dan tekan Enter): ");
if (baris.isEmpty())
pilihan = '0';
else
pilihan = baris.charAt(0);
} while (pilihan < '1' || pilihan > '4');
return pilihan;
}
if (j != (jumKota-1))
System.out.print(" - "); // Beri pemisah antarkota
}
// Menambahkan data
public boolean tambahData(String kotaBaru) {
// Cari posisi penyisipan
int posisi = -1;
for (int j = 0; j <jumKota; j++)
if (kotaBaru.compareTo(kota.get(j)) < 0) {
posisi = j;
break;
}
if (posisi == -1) {
// Sisipkan di belakang
kota.add(kotaBaru);
jumKota = jumKota + 1;
}
else { // Kalau posisi tidak sama dengan -1
// Sisipkan pada posisi
kota.add(posisi, kotaBaru);
jumKota = jumKota + 1;
}
return true;
}
// Menghapus data
public boolean hapusData(String kotaX) {
// Cari posisi penghapusan
int posisi = -1;
for (int j = 0; j <jumKota; j++) {
if (kotaX.compareTo(kota.get(j)) == 0) {
// Kalau sama
posisi = j;
break;
}
}
kota.remove(posisi); // Hapus
jumKota = jumKota - 1;
return true;
}
}
Outputnya:
Isi array:
Medan - Pontianak - Surabaya
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 1
Penambahan data.
Kota: Samarida
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 3
Isi array:
Medan - Pontianak - Samarida - Surabaya
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 1
Penambahan data.
Kota: Semarang
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 3
Isi array:
Medan - Pontianak - Samarida - Semarang - Surabaya
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 2
Penghapusan data.
Kota: samarida
Data yang akan dihapus tidak ditemukan
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 2
Penghapusan data.
Kota: Samarinda
Data yang akan dihapus tidak ditemukan
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 3
Isi array:
Medan - Pontianak - Samarida - Semarang - Surabaya
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 2
Penghapusan data.
Kota: samarida
Data yang akan dihapus tidak ditemukan
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 2
Penghapusan data.
Kota: Samarida
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 3
Isi array:
Medan - Pontianak - Semarang - Surabaya
Menu:
1. Tambah data
2. Hapus data
3. Tampilkan data
4. Selesai
Pilihan (1, 2, 3, atau 4 dan tekan Enter): 4
*** Selesai