Review
Mandiri Matkul Struktur Data
pengenalan
data structure,kegunaan data structure dan penjelasan mengenai Array (Pertemuan
1)
Apa
itu Struktur Data?
Struktur data adalah cara menyimpan dan mengatur data secara terstruktur pada sistem komputer atau database sehingga lebih mudah diakses. Secara teknis, data dalam bentuk angka, huruf, simbol, dan lainnya ini diletakkan dalam kolom-kolom dan susunan tertentu.
Dalam menyusun data, terdapat beberapa istilah yang perlu Anda
pahami, yaitu node dan indeks. Berikut adalah penjelasan
tentang kedua istilah tersebut.
- Node, yaitu elemen yang terdapat dalam
struktur data. Setiap node berisi pointer ke node selanjutnya.
- Indeks,
yaitu objek dalam sistem database yang bisa mempercepat proses pencarian
data.
Struktur data bisa digunakan untuk mengelola database, melakukan
kompres file, hingga mengolah data lainnya. Praktis, struktur ini menjadi hal
yang harus dipelajari karena dapat membantu Anda untuk menyatukan berbagai
elemen data secara efektif. Apalagi, struktur data juga akan mempengaruhi
ketepatan algoritma suatu program.
Kegunaan Struktur Data
Dalam pemrograman, struktur data memiliki banyak kegunaan. Hal
inilah yang membuat banyak orang tertarik untuk belajar pemrograman.
- Membuat
proses pemrograman yang mudah. Struktur
data bisa digunakan untuk membuat perintah dengan bahasa
pemrogram dengan lebih mudah.
- Menyimpan
dan mengatur data. Mudah
menyimpan dan mengatur data secara efisien, rapi, dan terorganisir.
- Pertukaran
data. Anda
bisa membagikan informasi dengan cepat dan mudah walaupun dilakukan antar
aplikasi.
- Meningkatkan
kualitas algoritma. Struktur
data bisa berpengaruh ke tingkat efektivitas algoritma.
- Mengantisipasi
Masalah Coding. Masalah
ketika coding bisa selesai lebih cepat dengan menggunakan
struktur data. Hal ini karena kesalahan atau error bisa segera ditemukan.
- Mengelola
sumber daya dan layanan.
Sumber daya dan layanan dalam sistem operasi bisa diatur melalui struktur
data. Struktur data dalam konteks ini biasanya memuat manajemen direktori
file, alokasi memori, dsb.
- Pengindeksan. Struktur data bisa digunakan untuk
mengindeks objek yang disimpan dalam database.
- Searching. Indeks yang terdapat pada struktur data
akan mempercepat proses pencarian data tertentu.
- Skalabilitas. Struktur data dipakai untuk mengalokasikan
dan mengelola penyimpanan data di seluruh lokasi penyimpanan. Dengan
begitu, suatu aplikasi big data bisa terjamin performa dan kemampuan
upgrade-nya.
Array
Array mempunyai kumpulan elemen yang jaraknya saling berdekatan. Array dapat
membantu seseorang untuk mencari data secara acak hanya menggunakan
indeksnya.
Kapasitas elemen yang dapat dialokasikan pada tipe array bersifat
statis. Jika Anda ingin menyisipkan elemen baru ke array, maka
harus membuat array baru dengan ukuran yang lebih besar.
Sebaliknya, jika ingin menghapus elemen tertentu, Anda harus membuat array baru
dengan ukuran yang lebih kecil.
Selain itu, array juga memungkinkan Anda untuk
menyimpan beberapa data dengan jenis yang sama dalam satu nama. Tipe array biasa
digunakan untuk membangun struktur data, seperti vektor dan matriks.
Keunggulan tipe array:
- Bisa
digunakan sebagai implementasi tipe lainnya, seperti queue dan stack.
- Proses
pencarian data bisa dilakukan lebih cepat.
Kekurangan tipe array:
- Penambahan
dan pengurangan data membutuhkan waktu yang lebih lama karena tipe array menampung
data secara berurutan.
Contoh Codingan Array :
public class SortingSearching {
static void
sort(int[] angka) {
for (int i = 0; i
< angka.length; i++) {
for (int j = 0; j
< angka.length-1; j++) {
if (angka[j]
> angka [j + 1]) {
int wadah
= angka [j];
angka [j]
= angka [j+1];
angka
[j+1] = wadah;
}
}
}
}
static int
Search(int[]angka, int cari, int i, int j) {
int tengah;
while (i <= j) {
tengah = (i+j)/2;
if (cari ==
angka[tengah]) return tengah;
else
if(cari<angka[tengah]) j = tengah - 1;
else i = tengah +
1;
}
return - 1;
}
public static void main
(String[] args) {
int[] angka =
{5,10,7,3,8,4,9,1,2,13,15,11,14,12};
System.out.println("====== Di bawah adalah list angka
======");
sort(angka);
for (int i = 0; i
< angka.length; i++) {
System.out.print(angka[i] + " "
}
System.out.println("");
int cari = 50;
int hasil =
Search(angka, cari, 0, angka.length-1);
if (hasil >= 0) {
System.out.println("");
System.out.println("Angka yang di cari adalah angka " + cari);
System.out.println("Angka ketemu di indeks ke-" + hasil);
}
else
System.out.println("");
System.out.println("Angka yang di cari
adalah angka " + cari);
System.out.println("Angka tidak
ditemukan");
}
}
konsep dan implementasi linkedlist (pertemuan 2)
Linked list adalah struktur
data yang terdiri dari urutan data linier yang dihubungkan satu sama lain. Saat
menggunakan tipe linked list, Anda harus mengakses data secara
manual. Hal ini karena Anda tidak bisa mencari data dengan sistem acak.
Keunggulan tipe linked list:
- Ukuran
lebih dinamis.
- Alokasi
penggunaan memori bisa Anda sesuaikan dengan kebutuhan.
- Penambahan
atau pengurangan data lebih cepat.
Kekurangan tipe linked list:
- Menguras
memori yang lebih besar.
- Tidak bisa
kembali ke node sebelumnya (reverse traversal),
kecuali pada jenis doubly linked list.
- Proses traversal lebih panjang karena tidak langsung mengakses data dengan indeks.
Contoh Codingan linked list :
import java.util.Iterator;
import java.util.LinkedList;
public class App {
public static void
main(String[] args) throws Exception {
LinkedList linkedList
= new LinkedList<Integer>();
// insert / add
linkedList.add(5);
linkedList.add(4);
linkedList.add(9);
boolean ketemu =
linkedList.contains(4);
if (ketemu == true) {
System.out.println("Data 4 ketemu di linked list");
}
// display data
Iterator<Integer> iterator = linkedList.iterator();
while
(iterator.hasNext()) {
System.out.println(iterator.next());
}
// remote tail
linkedList.removeLast();
// get tail
System.out.println(linkedList.getLast());
}
}
konsep stack dan implementasi stack (pertemuan 3)
Pengertian Stacks Stack/Tumpukkan adalah struktur data linier yang mengikuti urutan tertentu di mana operasi dilakukan. Insert(penyisipan) dan remove(penghapusan) data ada pada satu akhir yang sama Stacks memakai strategi LIFO (Last In First Out). Strategi ini adalah elemen yang di sisipkan paling terakhir adalah dia yang akan dikeluarkan pertama kali Ada banyak sekali contoh stack di kehidupan nyata kita. Contohnya Tumpukkan kursi chitose
Keunggulan
tipe stack:
- Dapat mengelola data secara efisien.
- Bisa membersihkan objek secara otomatis.
- Dapat mengontrol memori dengan mandiri.
Kekurangan
tipe stack:
- Kapasitas memori yang sangat terbatas.
- Kemungkinan terjadi overflow ketika jumlah objek terlalu
banyak.
- Tidak dapat mengakses data secara acak.
Stack
mempunyai beberapa function :
·
push() untuk
menyisipkan elemen pada stack
·
pop() untuk
menghapus sebuah elemen pada stack
·
top() untuk
mengetahui elemen paling atas
·
isEmpty() untuk
mengetahui apakah stack kosong
·
size() untuk
mengetahui ukuran stack
·
Contoh
Codingan Stack:
public
class Stack {
static final int MAX = 1000;
int top;
String a[] = new String[MAX];
public Stack() {
top = -1;
}
public void push(String x){
if (top >= (MAX - 1)) {
System.out.println("Stack
Overflow");
} else {
a[++top] = x;
System.out.println(x +
" Dimasukan ke dalam stack");
}
}
public String pop() {
String x;
x = a[top--];
return x;
}
public String top() {
String x;
x = a[top];
return x;
}
public int size() {
return top +1;
}
public boolean isEmpty() {
return top <= 0;
}
public static void main(String[]
args) {
Stack stack = new Stack();
System.out.println("Apakah
stack kosong? " + stack.isEmpty());
System.out.println();
stack.push("luffy");
stack.push("Zoro");
stack.push("Nami");
stack.push("Ussop");
stack.push("Sanji");
stack.push("Chopper");
stack.push("Robbin");
stack.push("Franky");
stack.push("Brook");
stack.push("Jinbe");
System.out.println();
System.out.println("Top
: " + stack.top());
System.out.println("Size
: " + stack.size());
System.out.println("Popped:
" + stack.pop());
System.out.println("Top
: " + stack.top());
}
}
konsep Queue dan implementasi Queue (pertemuan 4 & 5)
Apa itu Queue, Queue adalah salah satu implementasi dari linked list. Queue menerapkan konsep FIFO (First In First Out) atau FCFS (First Come, First Serve). Berbeda dengan Stack yang menerapkan konsep LIFO (Last In, First Out). Simplenya, yaa seperti jika kita mengantri untuk membeli sesuatu. Begitulah konsep dari Queue. Untuk Lebih jelasnya, mari kita perhatikan gambar berikut ini.
·
Front: adalah
kepala dari antrian (titik di mana antrian dimulai)
·
Back: adalah
ekor dari antrian (titik akhir dari antrian)
·
Enqueue: proses
menambahkan satu value ke dalam antrian
·
Dequeue: proses
mengeluarkan satu value dari antrian
Dapat
kita perhatikan dari gambar di atas, bahwa queue memiliki limitasi dalam
storage-nya. Itulah kenapa disebut queue, yang berarti antrian. Yakni suatu
manajemen penyimpanan sementara untuk menunggu ketika value di depannya sedang
di proses. Dalam komputer pun juga ada antrian, namun karena kecepatan proses
sangat cepat, jadi seolah olah seluruh instruksi dijalankan bersama – sama.
Keunggulan
tipe queue:
- Data yang
masuk akan dilayani sesuai urutannya.
- Proses
antrean data lebih cepat dan optimal.
- Menangani
beberapa tipe data sekaligus.
Kekurangan
tipe queue:
- Jika waktu
pelayanan habis, maka data yang terakhir masuk tidak bisa dilayani.
- Proses
yang rumit saat harus menambah atau menghapus elemen dari tengah.
- Butuh
waktu lama untuk mencari antrean.
Contoh
Codingan Queue :
public
class Queue {
// capacity adalah kapasitas yang bisa
collection tampung
// size adalah jumlah elemen pada queue
keadaan sekarang
int capacity, size;
int front, rear;
String[] elements;
// constructor
public Queue(int capacity) {
this.capacity = capacity;
size = 0;
front = size;
rear = capacity - 1;
elements = new String[capacity];
}
public boolean isFull() {
return capacity == size;
}
public boolean isEmpty() {
return size == 0;
}
public void enqueue(String e) {
if (isFull()) {
System.out.println("Queue is
Full, element cannot be enqueued");
return;
}
rear = (rear + 1) % capacity;
elements[rear] = e;
size++;
System.out.println("Element
"+e+" enqueued successfully");
}
public void dequeue() {
if (isEmpty()) {
System.out.println("Queue is
empty, element cannot be dequeued");
return;
}
elements[front] = null;
front = (front + 1) % capacity;
size--;
}
public void showAll() {
for (int i = 0; i < elements.length;
i++) {
System.out.println(elements[i]);
}
}
}
Contoh
Codingan Class Main nya
public
class App {
public static void main(String[] args) {
Queue antrianBioskop = new Queue(3);
antrianBioskop.dequeue();
antrianBioskop.enqueue("Andrew");
antrianBioskop.enqueue("Elis");
antrianBioskop.enqueue("Roman");
antrianBioskop.enqueue("Andrew");//
harusnya full
antrianBioskop.dequeue();
antrianBioskop.dequeue();
System.out.println("Selesai");
}
}
Komentar
Posting Komentar