List

ArrayList, LinkedList, Stack, dan Vector

ArrayList

Array List adalah sebuah kelas  yang  dapat penyimpanan data berupa list objek berbentuk array yang ukurannya dapat berubah secara dinamis sesuai dengan jumlah data yang dimasukkan.

Perbedaan paling mendasar antara Array dan ArrayList adalah:

  • Untuk menyimpan data dalam array biasa, maka harus mendeklarasikan jumlah elemen maksimal yang bisa menampung. Dengan kata lain jika jumlah datanya fleksibel, maka array tidak bisa digunakan.
  • ArrayList dapat menampung sejumlah data secara dinamis, sehingga seberapapun jumlahnya akan ditampung oleh ArrayList tanpa memperhatikan berapa jumlah maksimal elemen yang dapat ditampung.

ArrayList digunakan dalam menyimpan data dalam bentuk objek, sehingga untuk menyimpan data didalam ArrayList maka, buatlah sebuah kelas yang kemudian dijadikan objek yang dapat menyimpan data. ArrayList terdapat  pada kelas java.util, sehingga untuk menggunakan ArrayList, maka harus melakukan import java.util.

Perhatikanlah gambar dibawah ini yang menjelaskan mengenai gambaran ArrayList:

Lihatlah gambar diatas, gambar diatas menunjukkan bahwa size atau ukuran banyaknya data yang ditampung adalah 5 karena data yang diinputkan ada 5 data, jika ditambahkan data lagi, maka size ArrayList akan berubah secara dinamis sesuai jumlah data.

ArrayList dapat menyimpan sekumpulan data yang disimpan dalam satu-kesatuan. Misalkan: menyimpan data mahasiswa berupa NIM, Nama, dan Alamat, maka data tersebut akan disimpan dalam satu-kesatuan array biarpun data tersebut memiliki tipe data berbeda. Berarti ArrayList tersebut menyimpan 3 data variabel yang berbeda dalam satu elemen array.

CONTOH CODING :

ArrayList1

ArrayList2

ArrayList3

HASIL CODING :

ArrayList4

ArrayList5

Linked List

Pengertian Linked list :

  • sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian
  • struktur berupa rangkaian elemen saling berkait dimana setiap elemen dihubungkan elemen lain melalui pointer. Pointer adalah alamat elemen. Penggunaan pointer untuk mengacu elemen berakibat elemen-elemen bersebelahan secara logik walau tidak bersebelahan secara fisik di memori.

Link list adalah desain tempat penyimpanan data yang terdiri dari node-node (simpul-simpul) yang saling terhubung.
Link list dapat diilustrasikan seperti kereta api, dimana kereta api terdiri dari gerbong-gerbong yang saling terhubung yang dapat mengangkut penumpang. Gerbong disini setara dengan node dalam link list yang berfungsi untuk menyimpan data.
Jika kita menyimpan data 3, 5 dan 7 dalam array, maka ilustrasi tempat penyimpanannya sbb:

2

Dengan 1 nama, array bisa menyimpan data yg bertipe sama. Dimana setiap data mempunyai indeks.

Sedangkan jika data tersebut disimpan dalam link list, maka ilustrasi tempat penyimpanannya sbb:

Singly Linked List :

~ Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya dan juga memiliki field yang berisi data.

~ Akhir linked list ditandai dengan node terakhir akan menunjuk ke null yang akan digunakan sebagai kondisi berhenti saat pembacaan linked list.

4

Singly Linked List Non Circular

Doubly Linked List :

~ Linked list dengan menggunakan pointer, dimana setiap node memiliki 3 field, yaitu: 1 field pointer yang menunjuk ke pointer berikutnya, 1 field pointer yang menunjuk ke pointer sebelumnya dan field yang berisi data dari node tersebut.

~ Pointer next dan prev-nya menunjuk ke null.

Singly Circular Linked List :

~ Single Linked List yang pointer next-nya menunjuk ke dirinya sendiri, jika terdiri dari beberapa node maka pointer terakhirnya akan menunjuk ke pointer terdepannya.

Double Circular Linked List :

~ Double Linked List yang pointer next dan prev-nya menunjuk ke dirinya sendiri secara circular.

Link list tidak mempunyai indeks seperti array. Kita hanya bisa memberi nama node. Akan tetapi, tidak semua node dalam link list mempunyai nama. Sebaiknya kita memberi nama untuk node yang pertama (misal namanya head), dan node yang terakhir (misal namanya tail). Tujuannya untuk memudahkan operasi link list dari depan atau belakang, misal nambah data atau menghapus data.

Langkah yang pertama, kita harus mendefinisikan apa itu node. Dalam Java, sebaiknya pendefinisian node ini dibuat dalam sebuah class, misal:

5

Kemudian kita buat design link list dalam class yang lain, misal:

7

Operasi-operasi yang bisa dilakukan dalam link list yaitu:

  1. Tambah data (insert)
  2. Edit data (edit)
  3. Hapus data (delete)
  4. Pengurutan data (sorting)
  5. Pencarian data (searching)

Tambah Depan

Untuk tambah data dari depan, caranya:

8

Tambah Belakang

Untuk tambah data dari belakang, caranya:

9

Hapus Depan

Untuk menghapus data dari depan, caranya:

10

Hapus Belakang

Untuk menghapus data dari belakang, caranya:

11

CONTOH CODING :

LinkedList22

HASIL CODING :

LinkedList23

Stack

Pengertian Stack pada Struktur Data adalah sebagai tumpukan dari benda, sekumpulan data yang seolah-olah diletakkan di atas data yang lain, koleksi dari objek-objek homogen, atau Suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja. Stack pada Struktur Data dapat diilustrasikan dengan dua buah kotak yang ditumpuk, kotak yang satu akan ditumpuk diatas kotak yang lainnya. Jika kemudian stack 2 kotak tadi, ditambah kotak ketiga, keempat, kelima, dan seterusnya, maka akan diperoleh sebuah stack kotak yang terdiri dari N kotak.

Stack bersifat LIFO (Last In First Out) artinya Benda yang terakhir masuk ke dalam stack akan menjadi yang pertama keluar dari stack

Operasi-operasi yang biasanya terdapat pada Stack yaitu:
1. Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
2. Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
3. Clear : digunakan untuk mengosongkan stack
4. IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
5. IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh

Cara mendefenisikan Stack dengan Array of Struct yaitu:
1. Definisikan Stack dengan menggunakan struct
2. Definisikan konstanta MAX_STACK untuk menyimpan maksimum isi stack
3. Buatlah variabel array data sebagai implementasi stack
4. Deklarasikan operasi-operasi/function di atas dan buat implemetasinya.

import java.util.EmptyStackException;
import java.util.Stack;
import java.util.Vector;class vektorstack{static void showpush(Stack st, String a) {
st.push(new String(a));
System.out.println(“push(” + a + “)”);
System.out.println(“stack: ” + st);
}static void showpop(Stack st) {
System.out.print(“pop -> “);
String a = (String) st.pop();
System.out.println(a);
System.out.println(“stack: ” + st);
}

CONTOH CODING :

Stack31

Stack32

HASIL CODING :

Stack33

Inisialisasi Stack
Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0, yang berarti stack adalah kosong.
Top adalah suatu variabel penanda dalam STACK yang menunjukkan elemen teratas Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK sehingga menyebabkan stack penuh.

IsFull berfungsi untuk memeriksa apakah stack sudah penuh atau tidak. Dengan cara, memeriksa top of stack, jika sudah sama dengan MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full.

Ilustrasi Stack pada kondisi Full

IsEmpty berfungsi untuk memeriksa apakah stack masih kosong atau tidak. Dengan cara memeriksa top of stack, jika masih -1 maka berarti stack masih kosong.

Push berfungsi untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack (yang ditunjuk oleh TOS).
Tambah satu (increment) nilai top of stack lebih dahulu setiap kali ada penambahan elemen stack.
Asalkan stack masih belum penuh, isikan data baru ke stack berdasarkan indeks top of stack setelah diincrement sebelumnya.

Pop berfungsi untuk mengambil elemen teratas (data yang ditunjuk oleh TOS) dari stack.
Ambil dahulu nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai yang akan dipop, baru dilakukan decrement nilai top of stack sehingga jumlah elemen stack berkurang.

Printberfungsi untuk menampilkan semua elemen-elemen stack dengan cara looping semua nilai array secara terbalik, karena kita harus mengakses dari indeks array tertinggi terlebih dahulu baru ke indeks yang kecil.

Vektor

Definisi Umum

Vektor adalah struktur data yang digunakan untuk menyimpan data spasial. Data Vektor adalah terdiri dari garis atau lengkungan, yang di definisikan sebagai awal dan akhir sebuah titik yang bertemu yang dinamakan node. Lokasi dan topologi dari node tersebut disimpan secara ekplisit. Atributnya didefinisikan oleh batasan-batasannya (boundary) sendiri dan kurva garis digambarkan sebagai seri dari lengkungan yang saling terhubung.

Vektor berbasis GIS didefinisikan sebagai vektorial dari data geografis. Menurut karakteristik dari model data, objek geografis secara ekplisit digambarkan dengan karakteristik spasial yang di asosiasikan dengan aspek thematic.

Ada cara yang berbeda untuk mengorganisasikan database rangkap ini (Spasial dan Thematic). Biasanya, sistem vektorial terdiri dari dua komponen ; yang pertama mengatur data spasial dan yang lainnya mengatur data thematic. Ini dinamakan dengan organisasi sistem hibrid, dimana terhubung sebagai basisdata relational pada attributnya secara topologi untuk data spasial. Elemen kunci pada sistem ini di identifikasikan pada setiap objek. Indentifikasi ini adalah unix dan berbeda untuk setiap objek dan memungkinkan sistem untuk terhubung dengan basis data.

CONTOH CODING :

14

HASIL CODING :

15

Leave a comment