FITO ARYOGA
NPM : 2270111010
Kelas : S1-SI-2
Bismilllahirrohmanirrohim
Segala puji bagi Allah SWT. Tuhan semesta alam yang telah memberikan
begitu banyak nikmat yang dilimpahkan kepada kita. Terutama nikmat yang hanya
diberikan kepada manusia, yakni nikmat berakal Untuk menyelam lebih dalam
ilmu pengetahuan.
Sholawat serta salam tidak lupa kita curah limpahkan pada junjungan kita, satu-
muka bumi, yaitu Rosulullah SAW. Yang telah memberikan tauladan terbaik dalam
qiyamah nanti.
Tidak lupa saya ucapkan terimakasih banya kepada dosen pengampu mata kuliah
Struktur Data Dewi Triyanti, S.Kom, M.T.I. yang telah memberikan kami
Saya sadar Modul ini jauh dari kesempurnaan. Oleh karena itu, kritik dan saran
Fito Aryoga
ii
DAFTAR ISI
COVER ................................................................................................................ i
D. Variabel ..................................................................................................... 9
BAB II ARRAY
iii
F. Kelebihan dan kekurangan Stack .............................................................. 29
BAB V QUEUE
iv
BAB VIII SEARCHING
v
BAB I
Pengantar Struktur Data
Apa itu Struktur Data.? Struktur data adalah suatu penyusunan, hierarki, atau
mudahnya bagaimana kita mengemas dan menyimpan suatu data yang dibutuhkan
lebih mudah diatur dan gunakan sesuai dengan kebutuhan algoritma yang akan kita
struktur data ibarat kontainer yang menyimpan banyak data dengan layout tertentu.
Dikarenakan memori computer terbatas, layout (tata letak) dan harus diatur dengan
baik. Oleh sebab itu, penyimpanan data membutuhkan “formasi” khusus agar data
Minimarket memiliki rak dan tata letak tertentu untuk menempatkan barang-
keperluan rumahh tangga lain sesuai jenis dan kategori barangnya. Ketika
pelanggan mencari minuman, ia bis langsung menuju rak khusus untuk minuman
1
Misalnya, struktur data dapat sesederhana variabel. Variabel adalah suatu
placeholder atau tempat untuk menampung suatu data. Saat kita membuat aplikasi
mahasiswa tersebut. Jadi, terdapat struktur data berupa variabel yang bernama
aplikasi, misalnya:
Lalu bagaimana jika data yang ditampung bukan hanyalah nama saja? Kita dapat
membuat struktur data lain yang lebih kompleks, misalnya membuat himpuan,
larik, atau array. Berbeda dengan variabel yang hanya menampung satu jenis data,
array dapat menampung beberapa data sekaligus. Misalnya, kita dapat membuat
array:
data_mahasiswa[
];
atau struktur data yang lainnya amatlah bergantung pada jenis Bahasa
2
tidaklah memiliki perbedaan yang signifikan. Terdapat pula beberapa jenis struktur
data lainnya yang dapat digunakan untuk menampung dan menyusun suatu data
Oleh karena itu, berikut adalah berbagai uraian mengenai dasar-dasar struktur data
sebagai pengantar awal yang dapat digunakan untuk memahami lebih lanjut
digunakan secara efisien (Sjukani, 2012). Sementara itu data sendiri merupakan
representasi dari fakta dunia nyata yang disimpan, direkam atau direpresentasikan
dalam bentuk tulisan, suara, gambar, sinyal atau symbol dan lain-lain. Contoh data
3
ini sendiri dapat sesederhana nama seseorang, nomor telepon, hingga pendapatnya
Sementara itu, menurut Hidayati (2016, hlm. 1) struktur data ialah suatu koleksi
atau kelompok data yang dapat dikarakteristikan oleh sebuah organisasi serta
operasi yang didefinisikan terhadapnya. Artinya, struktur data adalah suatu koleksi
pengorganisasian, serta pengaturan data atau representasi dari fakta dunia nyata
dimana data yang terakhir kali dimasukkan adalah data yang pertama diambil agar
dapat digunakan atau dioperasikan secara efisien dan mudah diambil. Selain
strukturnya, kita juga perlu mengetahui tipe dan mekanisme untuk memanipulasi
B. Tipe Data
Sebelum membahas seperti apa saja struktur data yang ada, kita harus
mengetahui tipe data itu sendiri. Data memiliki tipe atau jenis yang berbeda satu
sama lain. Jenis atau tipe data dalam bahasa pemrograman adalah sekumpulan data
dengan nilai suatu jenis yang telah ditetapkan. Misalnya, tipe data tersebut adalah
4
bilangan bulat (tidak menerima desimal), bilangan desimal (menerima koma), atau
Sejatinya, memori komputer hanya dapat diisi dengan 0 dan 1. Jika kita memiliki
masalah dan kita ingin kode itu, sangat sulit untuk memberikan solusi dalam hal 0
jenis data. Sebagai contoh, integer mengambil 2 byte , Float mengambil 4 byte, dll.
Ini menyatakan bahwa dalam memori kita menggabungkan 2 byte (16 bit) dan
Secara umum, ada tiga tipe data, yakni data yang ditetapkan sistem, data turunan,
Tipe data utama merupakan tipe data yang didefinisikan oleh sistem. Tipe data
utama yang disediakan oleh banyak bahasa pemrograman yaitu: int (bilangan
bulat), float, karakter (char), boolean, dll. Jumlah bit yang dialokasikan untuk
setiap jenis data dasar tergantung pada bahasa pemrograman, kompilator dan
sistem operasi. Untuk jenis data dasar yang sama, bahasa yang berbeda.
Tergantung pada ukuran jenis data, total nilai yang tersedia (domain) juga akan
berubah. Sebagai contoh, “int” mungkin mengambil 2 byte atau 4 byte. Jika
dibutuhkan 2 byte (16 bit), maka total nilai yang mungkin adalah minus 32.768
5
untuk Plus 32.767 (-215 ke 215-1). Jika dibutuhkan 4 byte (32 bit), maka nilai
a. Bilangan Bulat(Int)
Tipe data bilangan bulat atau int adalah tipe data yang dapat menampung
digunakan untuk jenis data bilangan bulat biasanya adalah int. Tipe data
b. Karakter
Tipe data karakter merupakan jenis tipe data yang digunakan untuk
membutuhkan 1 byte ruang memori dan berkisar dari -128 ke 127 atau 0
hingga 255.
c. Boleean
Jenis data boolean digunakan untuk menyimpan nilai boolean atau nilai
logis, misalnya variabel boolean dapat menyimpan nilai true atau false (1
6
dan 0). Intinya, tipe data Boolean ini hanya dapat menampung 2 nilai
d. Floating Point
Tipe data floating point digunakan untuk menyimpan nilai floating point
presisi tunggal atau nilai desimal. Berbeda dengan bilangan bulat (int)
kunci pada jenis data floating point yatu float. Variabel float biasanya
Tipe data Floating Point Ganda digunakan untuk menyimpan nilai floating
point presisi ganda atau nilai desimal. Kata kunci yang digunakan untuk
tipe data floating point ganda adalah dua kali lipat. Variabel ganda
f. Void
Void berarti tanpa nilai apa pun. Artinya, void mewakili entitas yang tidak
bernilai. Jenis data void digunakan untuk fungsi tersebut yang tidak
mengembalikan nilai.
Wide character
Tipe data karakter lebar juga merupakan tipe data karakter tetapi jenis data
ini memiliki ukuran yang lebih besar daripada tipe data 8-bit normal.
7
Diwakili oleh wchar_t. Wide character umumnya dapat menampung 2 atau
4 byte data.
Tipe data turunan adalah tipe data yang berasal dari tipe data utama. Tipe data
ini dibagi menjadi empat jenis yaitu: a) Fungsi b) Array c) Pointer d) Referensi.
Tipe data abstrak adalah tipe data yang ditentukan oleh pengguna. Contohnya,
struktur. Biasanya C++ menyediakan tipe data ini yaitu: kelas, struktur, union,
Sebelumnya telah kita ketahui bahwa struktur data merupakan suatu cara tertentu
untuk mengatur dan menyimpan data di dalam komputer untuk memproses data
lebih efisien. Struktur data mempunyai format khusus dalam mengatur dan
menyimpan data. Jenis struktur data umum meliputi array, file, liked list, stack,
queue, trees, graph dan sebagainya. Tergantung pada organisasi elemen, struktur
Struktur data linear: elemen diakses dalam urutan berurutan tetapi tidak wajib
untuk menyimpan semua elemen secara berurutan. Contoh: Linked list, Stack,
dan Queue.
8
Struktur data non-linear: elemen struktur data ini disimpan/diakses dalam
D. Variabel
Dalam pemrograman, variabel merupakan lokasi atau tempat di dalam memori yang
mampu menyimpan data sementara pada suatu program, data tersebut dapat diubah,
Oleh karena itu, variabel haruslah memiliki nama, di mana nama variabel tidak
boleh sama dengan variable lainnya. Hal tersebut karena setiap variabel memiliki
alamat sendiri pada memori komputer, kita hanya perlu meyebutkan nama variabel
dimana data di simpan, maka komputer akan mampu menemukan alamat variabel
Ada beberapa syarat yang diperlukan dalam pemberian nama variabel yang
Penulisan nama variabel tidak boleh sama dengan nama keyword dan function.
Penulisan nama variabel harus diawali dengan huruf atau garis bawah
(underscore _), karakter berikutnya boleh angka, huruf atau garis bawah.
sebagai struktur data. Mengapa? Karena variabel hanya menampung data tunggal,
9
sementara itu sesuatu yang disebut “struktru” seharusnya lebih dari satu bukan?
Namun demikian variabel ini tetaplah penting untuk diketahui, karena merupakan
1. Array
Array adalah kumpulan item data yang disimpan di lokasi memori yang
Hal ini memudahkan untuk menghitung posisi setiap elemen hanya dengan
array.
2. Linked List
Seperti array, linked list merupakan struktur data jenis linier. Yang
10
3. Stack
Stack adalah struktur data linier yang mengikuti urutan tertentu di mana
LIFO (Last In First Out) atau data yang masuk terakhir adalah
FILO (First In Last Out) atau data yang pertama masuk akan
Dua urutan operasi tersebut sebenarnya memiliki makna yang sama. Pada
4. Queue
Seperti stack, queue adalah struktur data linier yang mengikuti urutan
operasi First In First Out (FIFO) atau elemen data yang lebih dulu
11
ditambahkan juga akan keluar lebih dulu. Dalam struktur queue, item
Perbedaan antara stack dan queue adalah pada proses penghapusan data.
Pada struktur stack kita menghapus item yang baru ditambahkan, sedangkan
5. Tree
Tidak seperti array, linked list, stack dan queue, yang merupakan struktur
data linier, tree adalah struktur data hierarkis. Binary tree adalah jenis
struktur tree di mana setiap node memiliki paling banyak dua child, yang
disebut sebagai left child dan right child. Binary tree seringkali
12
6. Grabh
Graph adalah struktur data yang terdiri dari kumpulan simpul berhingga
untuk menyimpan data dan antara dua buah simpul terdapat hubungan
Objek yang saling terkoneksi diwakili oleh sebuah titik yang disebut sebagai
7. Hash Table
khusus yang disebut fungsi hash. Fungsi hash digunakan untuk memetakan
nilai yang diberikan dengan kunci tertentu untuk akses elemen yang lebih
digunakan.
Misalkan fungsi hash H(x) memetakan nilai x pada indeks x%10 dalam
array. Contohnya, jika daftar nilai adalah [11, 12, 13, 14, 15] maka akan
masing.
13
14
BAB II
Array
Dalam dunia data, istilah array sering digunakan untuk menyatakan bagaimana
sebuah data disimpan. Array sebagai penyimpanan data memiliki kelebihan dan
kekurangan, serta kapan waktu yang baik untuk menggunakannya. Selain itu, ada
pula array pada Python yang memiliki kinerja tersendiri dibandingkan dengan
konsep array pada dasarnya. Untuk mengetahui lebih lanjut mengenai apa
A. Pengertian Array
Array adalah larik yang berisi kumpulan data dengan tipe serupa. Teknologi
Misalnya, sebuah kereta terdiri dari beberapa gerbong yang menyimpan barang
data dengan tipe yang sama, sedangkan kereta tersebut adalah apa yang disebut
kesamaan nilai, sama seperti array yang memuat data-data dengan kemiripan
tertentu.
mengelompokkan data-data. Dengan data set yang berskala besar, tentu lebih rumit
apabila harus mengetikkannya satu per satu seperti contoh pertama di atas. Namun,
15
dengan bantuan array, kerja Anda akan lebih mudah karena dapat menjadikannya
Array atau larik merupakan bagian dasar pembentukan suatu struktur data yang
lebih kompleks dari variabel. Hampir setiap jenis struktur data kompleks dapat
disajikan secara logic oleh array. Array dapat didefinsikan sebagai suatu himpunan
yang terurut dan homogen (Hidayati, 2016, hlm. 9). Terurut artinya elemen tersebut
dapat diidentifikasi sebagai elemen pertama, kedua, dan seterusnya hingga elemen
terakhir. Sementara itu homogen berarti setiap elemen dari suatu array haruslah
Oleh karena itu, sebuah array dapat memiliki elemen yang seluruhnya berupa tipe
data bilangan bulat (int), atau karakter, dan string. Bahkan, suatu array juga dapat
Kita dapat menggunakan variabel normal (v1, v2, v3, ..) ketika kita memiliki
sejumlah kecil objek, tetapi jika kita ingin menyimpan instance dalam jumlah besar,
akan sulit untuk mengelolanya dengan variabel normal. Oleh karena itu, dde dari
sebuah array adalah untuk merepresentasikan banyak nilai dalam satu “variabel”
1. Kelebihan Array
beragam data serupa dengan satu variabel. Misalnya seperti varian rasa pada
minuman yang telah dijelaskan di atas. Untuk mencari varian rasa yang
16
disediakan, Anda tidak perlu membaca tiga baris data, melainkan cukup satu
kumpulan data.
2. Kekurangan Array
serupa. Jadi, data-data yang tidak memiliki kesamaan nilai tidak bisa
Selain itu, apabila Anda menggunakan array untuk data berskala besar,
memori komputer yang sangat berharga nilainya akan sia-sia. Dalam kasus-
kasus tersebut, Anda perlu memilih beberapa metode lain dari array untuk
B. Karakteristik Array
Array memiliki beberapa karakteristik berikut ini.
17
2. Mempunyai type data sama ( bersifat Homogen)
4. Berurutan (terstruktur).
C. Dimensi Array
Sebelumnya telah disampaikan bahwa array dapat memiliki elemen berupa
array lainnya. Hal ini dapat terjadi karena array mempunyai dimensi, yakni: Array
Contoh :
18
Gambar 1.2 Contoh Program Java Array
Contoh :
19
3. Array Dimendi Tiga
Array dimensi tiga adalah array yang memerlukan tiga indeks. Pada
elemennya.
Contoh ;
20
4. Array Multi Dimensi
Array multi dimensi adalah array yang dapat menampung array lain yang
Contoh.:
21
Dapat diterapkan sebagai table pencarian di computer
Array Juga Dapat digunakan dalam pemrosesan suara dimana setiap sinyal
Array memungkinkan kita mengakses elemen data secara acak. Cara ini membuat
akses ke elemen array berdasarkan posisi tertentu menjadi lebih cepat dan efisien.
Kita dapat dengan mudah menyisipkan sebuah nilai pada posisi tertentu
Contoh Code :
22
Contoh kode :
Operasi pencarian ialah upaya menemukan nilai tertentu dalam array. Untuk
melakukan operasi ini kita perlu mengakses semua elemen array dan
Contoh Code :
23
BAB III
Stack
A. Pengertian Stack
Stack atau dalam Bahasa Indonesia diartikan tumpukan, adalah struktur data linier
yang mengikuti prinsip Last In First Out (LIFO). Artinya elemen yang terakhir
Cara struktur data stack dalam menyimpan sebuah nilai dapat kita bayangkan
seperti piring yang disusun rapi secara bertumpuk ke atas. Apabila kita ingin
mengambil piring bagian bawah, kita harus terlebih dahulu menyisihkan semua
Dalam istilah pemrograman, upaya menambahkan elemen pada struktur data stack
24
Gambar 1.2 Contoh Stack
Dari gambar di atas, dapat terlihat bahwa meskipun elemen ke-3 adalah yang paling
terakhir ditambahkan, namun elemen tersebut justru yang pertama dihapus. Operasi
inilah yang kemudian disebut sebagai prinsip operasi LIFO (Last In First Out).
25
Perlu diketahui, dalam struktur data stack ada dua kondisi yang perlu dihindari,
untuk struktur data stack sudah penuh namun masih dilakukan operasi
penyisipan elemen
1. Register Stack
2. Memory Stack
Pada stack jenis ini, kedalaman dari stack cukup fleksibel dan
26
C. Karakteristik Stack
Mengikuti prinsip operasi Last In First Out, yaitu elemen yang dimasukkan
Penyisipan dan penghapusan terjadi di satu ujung yaitu dari atas tumpukan.
Apabila ruang memori yang dialokasikan untuk struktur data stack sudah
penuh namun masih dilakukan operasi penyisipan elemen maka akan terjadi
stack overflow.
Apabila struktur data tidak memiliki elemen data atau kosong, namun tetap
Ada beberapa operasi dasar yang bisa kita untuk lakukan terhadap struktur data
27
1. Push
Merupakan Operan yang berfungsi untuk menambah satu elemen pada stack
2. Pop
dari dalam stack dengan syarat stack tidak dalam kondisi kosong.
3. IsEmpty
Yaitu operan yang berfungsi untuk menentukan apakah suatu stack apakah
stack kosong. Tanda bawah sebuah stack kosong adalah Top bernilai kurang
dari 0 (-1).
4. IsFull
Merupakan oprator yang digunakan untuk memeriksa apakah stack yang ada
sudah penuh.
Adapun fungsi dan kegunaan struktur data stack adalah sebagai berikut:
28
Salah satu contoh penerapan struktur data stack adalah fitur tombol back pada
browser. Dimana browser akan menyimpan semua URL yang telah kita kunjungi
Setiap kali kita mengunjungi halaman baru, halaman itu ditambahkan di atas stack.
Saat kita menekan tombol kembali, URL saat ini dihapus dari tumpukan, dan URL
sebelumnya diakses.
a. Kelebihan
dialokasikan.
membersihkan objek.
diandalkan.
29
Tidak mengizinkan pengubahan ukuran variabel:
b. Kekurangan
terbatas.
terdefinisi.
tidak normal.
30
BAB IV
Linked List
Linked List adalah suatu cara untuk menyimpan data dengan struktur
sehingga programmer dapat secara otomatis menciptakan suatu tempat baru untuk
menyimpan data kapan saja diperlukan. Linked list dikenal juga dengan sebutan
senarai berantai adalah stuktur data yang terdiri dari urutan record data dimana
selanjutnya (dalam urutan). Elemen data yang dihubungkan dengan link pada linked
list disebut Node. Biasanya dalam suatu linked list, terdapat istilah head dan tail .
1. Head adalah elemen yang berada pada posisi pertama dalam suatu linked list
2. Tail adalah elemen yang berada pada posisi terakhir dalam suatu linked list.
Linked list merupakan strukur data linier berbentuk rantai simpul di mana setiap
simpul menyimpan 2 item, yaitu nilai data dan pointer ke simpul elemen
berikutnya. Berbeda dengan array, elemen linked list tidak ditempatkan dalam
Ga
Gambar 1.1 Linked List
Simpul pertama dari linked list disebut sebagai head atau simpul kepala. Apabila
linked list berisi elemen kosong, maka nilai pointer dari head menunjuk ke NULL.
31
Begitu juga untuk pointer berikutnya dari simpul terakhir atau simpul ekor akan
menunjuk ke NULL.
Ukuran elemen dari linked list dapat bertambah secara dinamis dan mudah untuk
menyisipkan dan menghapus elemen karena tidak seperti array, kita hanya perlu
Linked list biasanya digunakan untuk membuat file system, adjacency list, dan hash
table.
Secara umum, linked list dapat dibagi ke dalam 4 jenis, yakni: Singly linked
list, Doubly linked list, Circular linked list, dan Circular doubly linked list.
Singly linked list adalah linked list unidirectional. Jadi, kita hanya
dapat melintasinya dalam satu arah, yaitu dari simpul kepala ke simpul ekor.
Contoh :
Doubly linked list adalah linked list bidirectional. Jadi, kita bisa
melintasinya secara dua arah. Tidak seperti singly linked list, simpul doubly
32
linked list berisi satu pointer tambahan yang disebut previous pointer.
Contoh ;
Circular linked list adalah linked list unidirectional. Kita hanya dapat
melintasinya dalam satu arah. Tetapi jenis linked list ini memiliki simpul
terakhir yang menunjuk ke simpul kepala. Jadi saat melintas, kita harus
Contoh :
Circular doubly linked list adalah gabungan dari Doubly linked list
dan Circular linked list. Seperti Doubly linked list, linked list ini memiliki
pointer tambahan yang disebut previous pointer, dan mirip dengan Circular
linked list, simpul terakhirnya menunjuk pada simpul kepala. Jenis linked
list ini adalah bidirectional. Jadi, kita bisa melintasinya dua arah .
33
Contoh :
Poses Inisialisasi
1. Proses Inisialisasi
Algoritma :
Firs = Null;
Last = Null;
Ilustrasi proses :
\0 \0
First Last
34
2. Membuat Simpul Baru
Intruksi :
P = (simpul*) malloc(sizeof(simpul));
Algoritma :
Void buat simpul(int*)
{
P = (simpul*) malloc(sizeof(simpul));
If (P1=NULL)
{ P- >Info=X;}
Else
Ooul<<”SimpulGagal Dibuat”;
}
a. Insert Kanan/Akhir
Algoritma :
Void Ins Akhir()
{
Last-> Link =P;
Last = P;
P ->Link = NULL;
}
35
b. Insert KiriAwal
Algoritma :
Void Ins Awal()
{
P -> Link = Q - >Link;
Q - > Link =P;
}
c. Insert Tengah
Algoritma :
Void Ins Tengah()
{
P -> Link = Q - >Link;
Q - > Link =P;
}
c. Delete Tengah
36
Algoritma :
Void Del Tengah()
{
R = Q - >Link ;
Q- >Link = R - >Link;
Free(R);
}
Ada beberapa operasi dan karakteristik yang bisa kita lakukan pada struktur data
linked list. Misalnya, operasi insertion yaitu tindakan menambahkan elemen baru
ke linked list.
1. Karekteristik
(tautan)
Untuk inisialiasi awal linked list, kita tidak perlu tahu ukuran dari
elemen.
Tiap-tiap simpul dari linked list berisi pointer atau tautan yang menjadi
37
Linked list bisa menyusut atau bertambah kapan saja dengan mudah.
38
Digunakan dalam aplikasi penampil gambar. Gambar sebelumnya dan
berikutnya ditautkan, sehingga dapat diakses oleh tombol prev dan next.
1. Kelebihan
efisien dapat dicapai karena ukuran linked list bertambah atau berkurang
pada runtime sehingga tidak ada pemborosan memori dan tidak perlu
penghapusan cukup mudah dalam linked list. Kita tidak perlu menggeser
2 Kekurangan
dibandingkan dengan array. Karena dalam linked list, pointer juga perlu
39
menyimpan alamat elemen berikutnya dan membutuhkan memori
dilakukan pada linked list seperti array yang dapat akses elemen
Akses Acak: Akses acak tidak bisa dilakukan dalam linked list karena
40
BAB V
Queue
A. Pengertian Queue
Queue adalah struktur data linier yang menerapkan prinsip operasi dimana elemen
data yang masuk pertama akan keluar lebih dulu. Prinsip ini dikenal dengan
Berbeda dengan struktur data stack yang menyimpan data secara bertumpuk
dimana hanya terdapat satu ujung yang terbuka untuk melakukan operasi data,
struktur data queue justru disusun secara horizontal dan terbuka di kedua ujungnya.
Ujung pertama (head) digunakan untuk menghapus data sedangkan ujung lainnya
Berbeda dengan struktur data stack yang menyimpan data secara bertumpuk
dimana hanya terdapat satu ujung yang terbuka untuk melakukan operasi data,
struktur data queue justru disusun secara horizontal dan terbuka di kedua ujungnya.
Ujung pertama (head) digunakan untuk menghapus data sedangkan ujung lainnya
data queue adalah barisan orang yang menunggu untuk membeli tiket di gedung
bioskop.
Orang yang baru datang akan bergabung dengan barisan dari ujung dan orang yang
berdiri di depan akan menjadi yang pertama mendapatkan tiket dan meninggalkan
barisan. Demikian pula dalam struktur data queue, data yang ditambahkan terlebih
41
Gambar 1.1 Ilustrasi Queue
Pada gambar di atas, karena elemen 1 ditambahkan ke antrian lebih dulu daripada
2, maka 1 adalah elemen yang pertama dihapus dari antrian. Hal ini mengikuti
disebut dequeue.
seperti C, C++, Java, Python atau C#, dengan spesifikasi yang hampir sama.
42
B. Jenis – Jenis Queue
Simple Queue
Circular Queue
Priority Queue
Double-Ended Queue(Dequeue)
1. Simple Queue
Simple queue adalah struktur data queue paling dasar di mana penyisipan item
Contoh :
2. Circular Queue
Pada circular queue, simpul terakhir terhubung ke simpul pertama. Queue jenis
ini juga dikenal sebagai Ring Buffer karena semua ujungnya terhubung ke
ujung yang lain. Penyisipan terjadi di akhir antrian dan penghapusan di depan
antrian.
43
Contoh :
3. Priority Queue
Priority Queue adalah strruktur data queue dimana simpul akan memiliki
beberapa prioritas yang telah ditentukan. Simpul dengan prioritas terbesar akan
menjadi yang pertama dihapus dari antrian. Sedangkan penyisipan item terjadi
Contoh :
44
4. Double-Ended Queue(Dequeue)
Contoh :
1. Karakteristik
Queue adalah daftar berurutan dari elemen-elemen dengan tipe data yang
serupa.
2. Oprasi Queue
berikut:
45
IsEmpty: Memeriksa apakah antrian kosong
1. Oprasi Engueue
ke dalam antrian
Jika antrian penuh – cetak kesalahan overflow dan keluar dari program.
46
2. Oprasi Dequeue
program.
Jika antrian tidak kosong – akses elemen data yang ditunjuk oleh
pointer depan.
tersedia.
47
D. Fungsi dan Kegunaan Queue
Berikut ini adalah beberapa fungsi queue yang paling umum dalam struktur data:
Queue banyak digunakan untuk menangani lalu lintas (traffic) situs web.
player
Membantu dalam melayani permintaan pada satu sumber daya bersama, seperti
Digunakan dalam transfer data asinkronus misal pipeline, IO file, dan socket.
a. Kelebihan
pertama.
konsumen.
lainnya.
a. Kekurangan
48
Dalam queue konvensional, elemen baru hanya dapat
complexity O(N).
49
BAB VI
Binary Tree
Binary Tree adalah struktur data yang mirip dengan Linked List. Bila
Linked List dianalogikan sebagai rantai yang linier maka Binary Tree dianalogikan
sebagai pohon. Binary Tree dikelompokkan menjadi tree yang tidak berurut
(unordered Binary Tree) dan tree yang terurut (ordered Binary Tree).
Tree merupakan struktur data yang biasanya tidak kontigu, dimana sebuah node bisa
memiliki beberapa "anak" (child node), dan berbeda dengan Graph, jalan menuju
sebuah child node hanya bisa dicapai melalui maksimal 1 node, dimana pada
Graph, dimungkinkan bahwa 1 node bisa dicapai dari banyak node lainnya.
Sebuah node yang tidak memiliki child node sama sekali dinamakan leaf node.
Binary tree adalah jenis tree yang simpulnya hanya dapat memiliki paling banyak
2 simpul anak (child node). Kedua simpul tersebut biasa disebut simpul kiri (left
node) dan simpul kanan (right node). Tree tipe ini lebih populer daripada jenis
lainnya.
Struktur data ini adalah metode khusus untuk mengatur dan menyimpan data di
50
Binary Tree Kosong
sebuah node root (paling awal) juga bisa dilakukan dengan cara yang mirip
Ketika melakukan print pada Binary Tree, ada 3 cara melakukan print,
tempat root node ketika diprint. Inorder artinya print from left-root-
51
right, Preorder artinya root-left-right, Postorder artinya left-right-
Contoh :
Lalu, ada juga fungsi insert dan delete. Meng-insert sebuah leaf dari
sebuah node relatif mudah, cukup cari node yang diinginkan, kemudian
set left atau right dari node tersebut menjadi elemen yang baru, sesuai kebutuhan.
Demikian pula delete sebuah leaf dari sebuah node, cukup cari node yang
diinginkan dan set left atau right dari node tersebut menjadi null. Tetapi bagaimana
jika node yang ingin di-delete memiliki child? Pada Binary Tree, cukup dengan
"menaikkan" elemen childnya ke node tersebut. Nah, apakah ada cara lain yang bisa
dilakukan untuk proses tersebut? Mari kita lihat pada bagian selanjutnya.
52
C. Jenis-Jenis Binary Tree dan Aplikasinya
Terdapat beberapa jenis Binary Tree lagi yang cukup berbeda, namun dapat
beririsan. Jenis yang pertama adalah Balanced Tree, dimana selisih dari tinggi
subpohon kiri dan subpohon kanan tidak lebih dari 1. Contoh Balanced Tree adalah
seperti demikian:
Jenis Tree yang kedua adalah Binary Search Tree, dimana struktur data ini memiliki
aturan penyimpanan yang ketat. Semua elemen harus unik, dan semua elemen pada
node kiri pasti lebih kecil daripada elemen root/parentnya, dan sebaliknya berlaku
53
enis Binary Tree ini, biasa disingkat sebagai BST, jika merupakan sebuah Balanced
Tree juga, akan memiliki Time Complexity yang sangat ringan, yakni O (log n).
Mengapa? Misalkan kita ingin mencari node dengan info 3. Kita periksa root node.
Apakah lebih besar atau kecil daripada 3? Lebih kecil. Maka kita bisa langsung
singkirkan node 21 dan anak-anaknya, dan hanya melihat node 2 dan anak-anaknya.
cek child kanan dari node 2. Ternyata nilai ini yang kita inginkan. Terlihat bahwa
untuk memangkas waktu yang signifikan semakin banyaknya data yang ada,
Binary Search Tree (BST) merupakan tree yang terurut (ordered Binary
Tree) yang memiliki kelebihan bila dibanding dengan struktur data lain.
dilakukan bila data sudah tersusun dalam struktur data BST. Pengurutan dapat
54
dari proses penelusuran ini akan dibahas pada pertemuan selanjutnya. Data yang
struktur data BST juga dapat dicari dengan mudah dan memiliki rata-rata
kompleksitas sebesar O(log n), namun membutuhkan waktu sebesar O(n) pada
kondisi terjelek dimana BST tidak berimbang dan membentuk seperti linked list
Agar data benar-benar tersusun dalam struktur data BST, dua aturan yang
harus dipenuhi pada saat data diatur dalam BST adalah sebagai berikut:
1. Semua data dibagian kiri sub-tree dari node t selalu lebih kecil dari data
2. Semua data dibagian kanan sub-tree dari node t selalu lebih besar atau
55
3. Contoh Aplikasi BST
56
BAB VII
Sorting
A. Pegertian Sorting
Sorting adalah sesuatu proses aplikasi dimana yang awalnya acak -acakkan lalu
diurutkan dalam sebuah sekumpulan objek menurut urutan atau susunan sesuai
dengan kebutuhan agar ketata rapi. Tujuan dari penggunaan sorting adalah
Penyusunan sorting ada 2 yaitu secara ascending dan descending. Ascending adalah
pengurutan dari kecil ke yang lebih besar sedangkan descending adalah pengurutan
dari besar ke yang lebih kecil. Contohnya diberikan angka acak yaitu : 10 , 34 ,
57
B. Jenis Jenis Sorting
1. Buble Sort
atau minimum yang dimulai dari data posisi 0 hingga ke posisi N-1. Ada 2
sebagai pengurutan.
maka tukar.
terakhir.
Contoh :
58
Penjlasan :
Jika data pertama lebih besar dari data kedua, mereka ditukar. Karena
(ascending).
berurutan
2. Selection Sort
atau minimum yang dimulai dari data posisi 0 hingga ke posisi N-1. Ada 2
sebagai pengurutan.
diposisi pos dengan data di posisi i jika k. dan ulangi sampai data sudah
keurut.
59
Contoh :
3. Insertion Sort
Langsung
60
Dengan Binnar
4. Radik Sort
61
sesuai kebutuhan, kemudian subkategori-kategori atau bagian-bagian
Catatan : perhatikan digit yang berwarna merah yaitu berupa tanda digit
Pada saat penentuan kategori lihat terlebih dahulu nilai digit yang terbesar
dicontoh ini yakni nilai digit yang terbesar 9 sehingga kategori sebanyak 9
5. Shell Sort
62
Pertama-tama adalah menentukan jarak mula-mula dari data yang akan
jarak N / 2. Apabila data pertama lebih besar dari data ke N / 2 tersebut maka
dibandingkan sehingga semua data ke-j selalu lebih kecil daripada data ke-
(j + N / 2).
besar dari data ke N / 4 tersebut maka kedua data tersebut ditukar. Kemudian
seterusnya hingga seluruh data dibandingkan sehingga semua data ke-j lebih
63
BAB VIII
Searching
A. Pengertian Searching
Searching dalam Komputer merupakan Fitur yang sering kita gunakan dalam proses
searching dalam struktur Data. Sebelum itu anda harus mengetahui definisi
Searching.
bisa dilakukan untuk mencari data yang ada di dalam memory komputer. Dalam
Pencarian di perlukan untuk mencari informasi khusus dari tabel pada saat lokasi
yang pasti dari informasi tersebut sebelumnya tidak diketahui. Pencarian selalu
dinyatakan dengan referensi pada adanya sekolompok data yang tersimpan secara
Array memungkinkan untuk menyimpan nilai yang bertipe sama. Operasi yang
umum dalam array adalah Sequential Search dan Binary search. Perbedaan dari
1. Macam-Macam Searching
64
a. Sequential Searching
dibandingkan secara satu per satu secara berurutan dengan data yang
dicari.
Contoh :
1. i ← 0 2.
2. ketemu ← false 3.
5. Jika (ketemu) maka i adalah indeks dari data yang dicari, jika tidak
65
Contoh Ilustrasi :
b. Binary Searching
sampai data ditemukan atau sampai ruang pencarian tidak dapat dibagi lagi
dicari dengan data yang ada di dalam tabel, khususnya untuk jumlah data
yang sangat besar ukurannya. Syarat dalam metode ini adalah Data sudah
Adapun Cara Kerja Metode Binary Searching dalam Struktur data seperti
berikut :
(middle)
66
2. bila sama berarti data ketemu, bila tidak, akan “dilihat” apakah data
ada di sebelah “kiri” (artinya data lebih kecil dari data di tengah) atau
3. Bila data ada di sebelah kiri, dilakukan pencarian dengan cara yang
4. Jadi, setiap kali pencarian, data selalu “dibelah” menjadi dua bagian
sampai pada perbandingan terakhir data juga tidak sama, berarti data
Contoh :
1. L ← 0 2.
2. R ← N - 1 3.
3. ketemu ← false 4.
dengan 8 5.
67
8. Jika (ketemu) maka m adalah indeks dari data yang dicari,
Contoh Ilustrasi :
68
DAFTAR PUSTAKA
https://serupa.id/pengantar-struktur-data/
https://serupa.id/pengantar-struktur-data/
https://revou.co/kosakata/struktur-data
69