Anda di halaman 1dari 23

Pembelajaran 5.

Pengetahuan Dasar Manajemen


Data (PDMD)

Kompetensi

Setelah mempelajari keseluruhan materi pada pembelajaran ini , Anda diharapkan


dapat :

1. Memahami struktur data statis


2. Memahami struktur data dinamis

Indikator Pencapaian Kompetensi

Setelah mempelajari materi dalam pembelajaran ini, anda dapat:


1. Menerapkan struktur data statis
2. Menerapkan struktur data dinamis

Uraian Materi

Manajemen data merupakan suatu bentuk kegiatan pengelolaan sumber daya


informasi yang meliputi, pertama proses pengumpulan data dan pencatatatn ke
dalam dokumen yang berfungsi sebagai masukan (input) bagi sistem. Kedua,
proses penyimpanan sumber daya informasi ke dalam suatu berkas dokumen.
Ketiga, pemeliharaan proses penambahan data baru dan perubahan data yang
ada supaya sumber daya informasi tetap mutakhir. Keempat, mengatur (organize)
proses penyusunan data sedemikian rupa untuk dapat memenuhi kebutuhan
informasi para pemakai. Jogiyanto (2005).

Struktur data merupakan sesuatu yang berfungsi untuk mengorganisasikan data


sedemikian rupa sehingga implementasi ( penerapan ) atau pemeliharaan logika
program menjadi lebih terstruktur. Secara umum program adalah kumpulan
intruksi atau perintah yang disusun sedemikian rupa sehingga mempunyai urutan
logika yang tepat untuk menyelesaikan suatu persoalan.

Pegembangan Perangkat Lunak dan Gim | 81


Berdasarkan jumlah komponen selama eksekusi program, maka dapat struktur
data dapat dikelompokkan menjadi :

1. Struktur Data Statis (Jumlah komponennya tidak berubah)


2. Struktur Data Dinamis (Jumlah komponennya dapat berubah)

Pada unity, seperti yang dijelaskan sebelumnya bahwa ada 3 bahasa


pemograman yang digunakan yaitu C#, Javascript, dan BOO. Untuk penjelasan
terkait struktur data menggunakan contoh code program yang menggunakan
bahasa pemograman C#.

Pada pemrograman C# terdapat class khusus yang menyimpan serangkaian nilai


atau objek yang disebut collections. Ada dua jenis collections yang tersedia di C#
yaitu Generic Collection dan Non-Generic Collection. Generic Collection
digunakan apabila Element dalam Collection mempunyai tipe data yang sama. Net
framework menyediakan beberapa Class Generic Collection, yang berguna untuk
menyimpan maupun memanipulasi Data, diantaranya adalah List<T>,
Dictionary<TKey, TValue>, SortedList<TKey, TValue>, Stack<T>, Queue<T>, dan
Hashset<T>. sedangkan Non Generic Collection di gunakan untuk menyimpan
Item yang bertipe Object. Untuk menggunakan Non-Generic Collection, kamu
harus menggunakan :

using System.Collection.

Berikut adalah class yang tergabung dengan System.Collection yatu ArrayList,


SortedList, Stack, Queue, Hashtable, dan BitArray.

1. Struktur Data Statis

Struktur data statis membutuhkan alokasi memori yang tetap sehingga memori
harus dipesan terlebihdahulu sebelum digunakan. Akibatnya akan terjadi
pemborosan memori jika ternyata memori yang dipesan tidak digunakan
seluruhnya. Kelebihan struktur data statis adalah letak datanya secara berurutan

82 | Pengembangan Perangkat Lunak dan Gim


dalam memori sehingga mudah untuk mengakses data tertentu yang dibutuhkan.
Struktur data statis baik digunakan untuk data yang ukurannya tidak besar.

Struktur data statis dapat dibagi menjadi 2 jenis, yaitu :

a. Array

Array adalah tipe data terstruktur yang terdiri dari sejumlah komponen yang
memiliki tipe data sama. Jenis arry dibedakan menjadi 3 yaitu array 1 dimensi,
array 2 dimensi, dan array multidimensi.

1) Array 1 Dimensi

Pada bahasa pemogramana C#, untuk mendeklarasikan array, format


penulisannya diawali dengan penentuan tipe variabel kemudian diikuti
dengan kurung siku, setelah itu nama variabel dituliskan dengan pemisah
spasi dan diakhiri dengan karakter titik koma.

1. Tipe_data[] Nama_Variabel;
2.

Beberapa contoh penulisan array 1 dimensi pada C#:

1. String[] mobil;
2. String[] motor = {“Yamaha”, “Honda”, “Suzuki”, “Ducati”,
“Kawasaki”}
3. Int[] angka = {10, 20, 30, 40}
4.

2) Array 2 Dimensi

Array 2 dimensi dapat dianggap sebagai tabel, yang memiliki jumlah baris
x dan jumlah kolom y. Berikut ini adalah ilustrasi array 2 dimensi, yang berisi
3 baris dan 4 kolom. Didefinisikan sebuah array dengan nama a sebagai
berikut:

Pegembangan Perangkat Lunak dan Gim | 83


Dengan demikian, setiap elemen dalam array a diidentifikasi dengan nama
elemen dari bentuk a[ i , j ], di mana a adalah nama array, dan i dan j adalah
indeks yang secara unik mengidentifikasi setiap elemen dalam array a.

Array 2 dimensi dapat diinisialisasi dengan menentukan nilai untuk setiap


baris. Contoh Array berikut adalah dengan 3 baris dan setiap baris memiliki
4 kolom.

1. int [,] a = new int [3,4] {


2. {0, 1, 2, 3} , /* inisialisasi nilai untuk baris index 0 */
3. {4, 5, 6, 7} , /* inisialisasi nilai untuk baris index 1 */
4. {8, 9, 10, 11} /* inisialisasi nilai untuk baris index 2 */
5. };
6.

Elemen dalam array 2 dimensi dapat diakses dengan menggunakan kode


program dimana harus menuliskan indeks baris dan indeks kolom dalam
array, contohnya sebagai berikut:

1. int val = a[2,3]; //menghasilkan nilai output 11


2.

Kode program C# di atas dimaksudkan untuk mengambil nilai elemen pada


baris ke-2 dan kolom ke-3. yang menjadi catatan bahwa perhitungan indeks
baris dan kolom dimulai dengan angka 0.

84 | Pengembangan Perangkat Lunak dan Gim


3) Array Multidimensi

Bahasa pemrograman C# mendukung array multidimensi hingga 32


dimensi. Array multidimensi dapat dideklarasikan dengan menambahkan
koma dalam kurung siku. Misalnya, [,] mendeklarasikan array dua dimensi,
[, ,] mendeklarasikan array tiga dimensi, [, , ,] mendeklarasikan array empat
dimensi, dan sebagainya. Jadi, dalam array multidimensi, jumlah koma
sama dengan jumlah dimensi ditambah 1.

1. int[,] arr2d; // array 2 dimensi


2. int[, ,] arr3d; // array3 dimensi
3. int[, , ,] arr4d ; // array 4 dimensi
4. int[, , , ,] arr5d; // array 5 dimensi
5.

Berikut adalah contoh cara deklarasi array 3 dimensi dan cara memanggil
salah satu nilai dari array tersebut.

1. int[, ,] arr3d1 = new int[1, 2, 2]{


2. { { 1, 2}, { 3, 4} }
3. };
4.
5. int[, ,] arr3d2 = new int[2, 2, 2]{
6. { {1, 2}, {3, 4} },
7. { {5, 6}, {7, 8} }
8. };
9.
10. int[, ,] arr3d3 = new int[2, 2, 3]{
11. { { 1, 2, 3}, {4, 5, 6} },
12. { { 7, 8, 9}, {10, 11, 12} }
13. };
14.
15. arr3d2[0, 0, 0]; // menghasilkan output 1
16. arr3d2[0, 0, 1]; // menghasilkan output 2

Pegembangan Perangkat Lunak dan Gim | 85


17. arr3d2[0, 1, 0]; // menghasilkan output 3
18. arr3d2[0, 1, 1]; // menghasilkan output 4
19. arr3d2[1, 0, 0]; // menghasilkan output 5
20. arr3d2[1, 0, 1]; // menghasilkan output 6
21. arr3d2[1, 1, 0]; // menghasilkan output 7
22. arr3d2[1, 1, 1]; // menghasilkan output 8
23.

b. Record

Record merupakan jenis tipe data terstruktur yang berisi beberapa data, yang
masing-masing dapat berlainan tipe termasuk bertipe array. Jadi secara
sederhana record merupakan tipe data terstruktur yang terdiri dari beberapa
data.

Kemudian masing-masing data tersebut disebut sebagai field. Namun yang


menarik adalah masing-masing data field dapat berupa satu atau beberapa
nama pengenal.

Tipe record mulai diperkenalkan pada C# versi 9. pada tipe data ini dapat
menggunakan parameter posisi untuk mendeklarasikan properti record dan
menginisialisasi nilai properti saat membuat instan. Berikut contoh kodenya:

1. public record Orang(string namaDepan, string namaBelakang);


2.
3. public static void Main()
4. {
5. Orang xman = new("Novi", "Nurlaela");
6. Console.WriteLine(xman);
7. // output: Orang { namaDepan = Novi, namaBelakang = Nurlaela
}
8. }
9.

86 | Pengembangan Perangkat Lunak dan Gim


2. Struktur Data Dinamis

Struktur data dinamis membutuhkan alokasi memori sesuai banyaknya data yang
didefinisikan.hal ini akan menghemat memori. Akan tetapi data tersimpan secara
acak dalam memori, sehingga untuk mengakses data tertentu dalam sebuah
struktur data dinamis memerlukan waktu yang agak lama karena harus dicari mulai
dari data pertama dalam struktur data tersebut. Struktur data dinamis baik
digunakan untuk data yang ukurannya sangat besar.

Pada C# yang termasuk dalam struktur data dinamis dapat yaitu :

a. Linked list

Linked List adalah struktur data linear yang terdiri dari sekelompok node secara
berurutan. Setiap node berisi dua bagian:

 Data
Setiap node dari linked list dapat menyimpan data.
 Alamat
Setiap node dari linked list berisi alamat ke node berikutnya, yang disebut
"Next".

Node pertama dari linked list direferensikan oleh penunjuk yang disebut
sebagai Head

Keuntungan dari penggunaan linked list:

 Tipe ini sangat dinamis dan dapat mengalokasikan memori ketika


diperlukan.
 Melakukan proses penyisipan dan penghapusan dapat dengan mudah
diimplementasikan.
 Struktur data lain seperti Stack and Queue juga dapat diimplementasikan
dengan mudah menggunakan Linked List.

Pegembangan Perangkat Lunak dan Gim | 87


 Tipe ini memiliki waktu akses yang lebih cepat dan dapat diperluas dalam
waktu konstan tanpa membebani memori.
 Karena tidak perlu mendefinisikan ukuran awal untuk linked list, maka
pemanfaatan memori sangatlah efektif.
 Backtracking dimungkinkan dalam penggunaan linked list ganda.

Tipe linked list:

 Singly Linked List.


Singly Linked List berisi node yang memiliki bagian data dan bagian alamat,
yaitu Next, yang menunjuk ke node berikutnya dalam urutan node dan
Pointer selanjutnya dari node terakhir akan mengarah ke nilai null.

Node dari singly linked list berisi bagian data dan bagian tautan. Tautan
akan berisi alamat node berikutnya dan diinisialisasi ke null. contoh
membuat definisi kelas node untuk singly linked list sebagai berikut

1. internal class Node {


2. internal int data;
3. internal Node next;
4. public Node(int d) {
5. data = d;
6. next = null;
7. }
8. }
9.
10. internal class SingleLinkedList {
11. internal Node head;
12. }

88 | Pengembangan Perangkat Lunak dan Gim


 Doubly Linked List.

Dalam Doubly linked list, setiap simpul berisi dua tautan. tautan pertama
menunjuk ke simpul sebelumnya dan tautan berikutnya menunjuk ke simpul
berikutnya dalam urutan. Penunjuk Prev dari simpul pertama dan penunjuk
Next dari simpul terakhir akan menunjuk ke Null.

Node untuk Doubly linked list akan berisi satu bagian data dan dua bagian
tautan yaitu tautan Prev dan tautan Next. Berikut adalah contoh kode
programnya.

1. internal class DNode {


2. internal int data;
3. internal DNode prev;
4. internal DNode next;
5. public DNode(int d) {
6. data = d;
7. prev = null;
8. next = null;
9. }
10. }
11.
12. internal class DoubleLinkedList {
13. internal DNode head;
14. }
15.

 Circular Linked List.


Dalam Circular Linked List, simpul Next terakhir akan mengarah ke simpul
pertama, sehingga membentuk rantai melingkar.

Pegembangan Perangkat Lunak dan Gim | 89


 Doubly Circular Linked List.
Pada Linked List ini, simpul Next dari simpul terakhir akan mengarah ke
simpul pertama dan penunjuk sebelumnya dari simpul pertama akan
menunjuk ke simpul terakhir.

Berbagai Operasi yang dapat dilakukan pada Linked List:

a. Menyisipkan data di depan Linked List


Berikut contoh kode program yang diterapkan pada Singly Linked List dan
Doubly Linked List.

1. internal void InsertFront(SingleLinkedList singlyList, int


new_data) {
2. Node new_node = new Node(new_data);
3. new_node.next = singlyList.head;
4. singlyList.head = new_node;
5. }
6.
7. internal void InsertFront(DoubleLinkedList doubleLinkedList,
int data) {
8. DNode newNode = new DNode(data);
9. newNode.next = doubleLinkedList.head;
10. newNode.prev = null;
11. if (doubleLinkedList.head != null) {

90 | Pengembangan Perangkat Lunak dan Gim


12. doubleLinkedList.head.prev = newNode;
13. }
14. doubleLinkedList.head = newNode;
15. }
16.

b. Memasukkan data di akhir Linked List


Berikut contoh kode program yang diterapkan pada Singly Linked List:

1. internal void InsertLast(SingleLinkedList singlyList,


int new_data)
2. {
3. Node new_node = new Node(new_data);
4. if (singlyList.head == null) {
5. singlyList.head = new_node;
6. return;
7. }
8. Node lastNode = GetLastNode(singlyList);
9. lastNode.next = new_node;
10. }
11.
12. internal Node GetLastNode(SingleLinkedList
singlyList) {
13. Node temp = singlyList.head;
14. while (temp.next != null) {
15. temp = temp.next;
16. }
17. return temp;
18. }

Pegembangan Perangkat Lunak dan Gim | 91


c. Menyisipkan data setelah node tertentu dari Linked List
Berikut contoh kode program yang diterapkan pada Singly Linked List dan
Doubly Linked List.

1. //kode untuk singly Linked List


2. internal void InsertAfter(Node prev_node, int new_data)
3. {
4. if (prev_node == null) {
5. Console.WriteLine("The given previous node Cannot be null");
6. return;
7. }
8. Node new_node = new Node(new_data);
9. new_node.next = prev_node.next;
10. prev_node.next = new_node;
11. }
12.
13. //Doubly Linked List
14. internal void InsertAfter(DNode prev_node, int data)
15. {
16. if (prev_node == null) {
17. Console.WriteLine("The given prevoius node cannot be null");
18. return;
19. }
20. DNode newNode = new DNode(data);
21. newNode.next = prev_node.next;
22. prev_node.next = newNode;
23. newNode.prev = prev_node;
24. if (newNode.next != null) {
25. newNode.next.prev = newNode;
26. }
27. }
28.
29.

92 | Pengembangan Perangkat Lunak dan Gim


d. Hapus node dari Linked List menggunakan nilai kunci yang diberikan
Berikut contoh kode program yang diterapkan pada Singly Linked List dan
Doubly Linked List.

1. //kode untuk singly Linked List


2. internal void DeleteNodebyKey(SingleLinkedList singlyList,
int key)
3. {
4. Node temp = singlyList.head;
5. Node prev = null;
6. if (temp != null && temp.data == key) {
7. singlyList.head = temp.next;
8. return;
9. }
10. while (temp != null && temp.data != key) {
11. prev = temp;
12. temp = temp.next;
13. }
14. if (temp == null) {
15. return;
16. }
17. prev.next = temp.next;
18. }
19.
20. //Doubly Linked List
21. internal void DeleteNodebyKey(DoubleLinkedList
doubleLinkedList, int key)
22. {
23. DNode temp = doubleLinkedList.head;
24. if (temp != null && temp.data == key) {
25. doubleLinkedList.head = temp.next;
26. doubleLinkedList.head.prev = null;
27. return;
28. }
29. while (temp != null && temp.data != key) {
30. temp = temp.next;

Pegembangan Perangkat Lunak dan Gim | 93


31. }
32. if (temp == null) {
33. return;
34. }
35. if (temp.next != null) {
36. temp.next.prev = temp.prev;
37. }
38. if (temp.prev != null) {
39. temp.prev.next = temp.next;
40. }
41. }
42.

e. Membalik urutan Singly Linked list


Berikut contoh kode program yang diterapkan pada Singly Linked List.

1. //kode untuk singly Linked List


2. public void ReverseLinkedList(SingleLinkedList singlyList)
3. {
4. Node prev = null;
5. Node current = singlyList.head;
6. Node temp = null;
7. while (current != null) {
8. temp = current.next;
9. current.next = prev;
10. prev = current;
11. current = temp;
12. }
13. singlyList.head = prev;
14. }
15.

94 | Pengembangan Perangkat Lunak dan Gim


3. Stack

Stack atau tumpukan ( dalam bahasa indonesia ) merupakan salah satu algoritma
dalam Struktur data yang dapat di analogikan sebagai koleksi data atau object.
Algoritma Stack ini menggunakan prinsip LIFO (Last In First Out) yang merupakan
konsep tumpukan yang mana Data yang di inputkan terakhir kali maka di keluarkan
terlebih dahulu. sebagai contoh, Seorang buruh cuci dalam suatu warung makan
sedang mencuci 5 buah piring, katakan saja piring A sampai dengan piring E ( A,
B, C, D, E ), setiap selesai mencuci satu piring buruh cuci tersebut menumpuk
piring-piring tersebut, misal urutan dari paling bawah adalah A, B, C, D, E. Setelah
selesai semua piring tersebut diantarnya ke meja pelayanan. Beberapa saat
kemudian ada pelanggan datang dan mengambil piring paling atas terlebih dahulu.
itulah konsep dari LIFO ( Last In First Out ).

Pada bahasa pemrograman C#, Stack tergabung dalam namespace


System.Generic.Collection. berikut adalah property dan method yang dimiliki oleh
Stack<T>:

Properties Keterangan
count digunakan untuk menghitung jumlah element yang
berada di dalam Stack

Pegembangan Perangkat Lunak dan Gim | 95


Method Keterangan
Peek() digunakan untuk mengembalikan element yang berada
pada urutan pertama ( paling atas ) pada stack, tanpa
menghapusnya
Pop() digunakan untuk mengambil element yang berada pada
urutan pertama, dan menghapusnya dari Stack.
Push(T) digunakan untuk memasukan element pada posisi
paling atas Stack.
Clear() digunakan untuk menghapus semua element yang
berada di dalam Stack.
Contains(T) bernilai True apabila element yang didefinisikan berada
didalam Stack.
ToArray() digunakan untuk menyalin isi dari Stack ke bentuk Array.

Contoh kode dalam C# untuk penggunaan Pop():

1. Stack<int> myStack = new Stack<int>();


2. myStack.Push(1);
3. myStack.Push(2);
4. myStack.Push(3);
5. myStack.Push(4);
6.
7. Console.Write("Number of elements in Stack: {0}", myStack.Count);
8.
9. while (myStack.Count > 0)
10. Console.Write(myStack.Pop() + ",");
11.
12. Console.Write("Number of elements in Stack: {0}", myStack.Count);
13.
14. // output:
15. // Number of elements in Stack: 4
16. // 4,3,2,1,
17. // Number of elements in Stack: 0

Contoh kode dalam C# untuk penggunaan Peek():

96 | Pengembangan Perangkat Lunak dan Gim


1. using System;
2. using System.Collections.Generic;
3.
4. public class Program
5. {
6. public static void Main()
7. {
8. Stack<int> myStack = new Stack<int>();
9. myStack.Push(1);
10. myStack.Push(2);
11. myStack.Push(3);
12. myStack.Push(4);
13.
14. Console.WriteLine("Number of elements in Stack: {0}",
myStack.Count);
15.
16. if(myStack.Count > 0)
17. {
18. Console.WriteLine(myStack.Peek());
19. Console.WriteLine(myStack.Peek());
20. }
21.
22. Console.WriteLine("Number of elements in Stack: {0}",
myStack.Count);
23. }
24. }
25.
26. /*
27. output:
28. Number of elements in Stack: 4
29. 4
30. 4
31. Number of elements in Stack: 4
32. */

Contoh kode dalam C# untuk penggunaan Contains():

Pegembangan Perangkat Lunak dan Gim | 97


1. using System;
2. using System.Collections.Generic;
3.
4. public class Program
5. {
6. public static void Main()
7. {
8. Stack<int> myStack = new Stack<int>();
9. myStack.Push(1);
10. myStack.Push(2);
11. myStack.Push(3);
12. myStack.Push(4);
13.
14. Console.WriteLine(myStack.Contains(2));
15. Console.WriteLine(myStack.Contains(10));
16. }
17. }
18.
19. /*
20. Output:
21. True
22. False
23. */

4. Queue

Hampir mirip dengan Stack<T> akan tetapi Queue<T> menerapkan Konsep FIFO
(First In First Out). Apabila pada stack, data yang terakhir di inputkan akan di
keluarkan terlebih dahulu, maka dalam Queue<T> Data yang pertama kali di
inputkan adalah yang di keluarkan terlebih dahulu. Input Data pada Queue<T>
sering atau dapat disebut dengan Enqueue sedangkan proses Pengeluarannya
disebut dengan DeQueue. Algoritma ini sangat efektif apabila diterapkan dalam
Layanan Call Center, Printer dan Sebagainya untuk membentuk suatu antrian.
contohnya pada Printing Network atau Sebuah ruangan yang menampung banyak

98 | Pengembangan Perangkat Lunak dan Gim


komputer akan tetapi menggunakan hanya satu printer. User yang menekan atau
melakukan printing terlebih dahulu yang akan dicetak dokumennya sedangkan
yang lain akan masuk kedalam antrian print. Queue<T> juga mempunya method
dan properti diantaranya sebagai berikut:

Properties Keterangan
count digunakan untuk menghitung jumlah element yang
berada di dalam Queue

Method Keterangan
Dequeue() digunakan untuk mengambil object pertama yang
berada didalam Queue dan menghapusnya.
Enqueue() digunakan untuk menambahkan data atau object
kedalam Queue.
Clear() digunakan untuk menghapus semua element yang
berada di dalam Queue.
Containts(T) bernilai True apabila element yang didefinisikan berada
didalam Queue.
ToArray() digunakan untuk menyalin isi dari Queue ke bentuk
Array.
Peek() digunakan untuk mengembalikan object yang berada
pada urutan pertama dari Queue tanpa menghapusnya.

Pegembangan Perangkat Lunak dan Gim | 99


Contoh kode membaca queue:

1. using System;
2. using System.Collections.Generic;
3.
4. public class Program
5. {
6. public static void Main()
7. {
8. Queue<string> strQ = new Queue<string>();
9. strQ.Enqueue("H");
10. strQ.Enqueue("e");
11. strQ.Enqueue("l");
12. strQ.Enqueue("l");
13. strQ.Enqueue("o");
14.
15. Console.WriteLine("Total elements: {0}", strQ.Count);
//prints 5
16.
17. while (strQ.Count > 0)
18. Console.WriteLine(strQ.Dequeue()); //prints Hello
19.
20. Console.WriteLine("Total elements: {0}", strQ.Count);
//prints 0
21. }
22. }
23.
24. /*
25. Output:
26. Total elements: 5
27. H
28. e
29. l
30. l
31. o
32. Total elements: 0

100 | Pengembangan Perangkat Lunak dan Gim


33. */
34.

Contoh kode penggunan Peek():

1. using System;
2. using System.Collections.Generic;
3.
4. public class Program
5. {
6. public static void Main()
7. {
8. Queue<string> strQ = new Queue<string>();
9. strQ.Enqueue("H");
10. strQ.Enqueue("e");
11. strQ.Enqueue("l");
12. strQ.Enqueue("l");
13. strQ.Enqueue("o");
14.
15. Console.WriteLine("Total elements: {0}", strQ.Count);
//prints 5
16.
17. if(strQ.Count > 0){
18. Console.WriteLine(strQ.Peek()); //prints H
19. Console.WriteLine(strQ.Peek()); //prints H
20. Console.WriteLine(strQ.Peek()); //prints H
21. }
22.
23. Console.WriteLine("Total elements: {0}", strQ.Count);
//prints 0
24. }
25. }
26.
27. /*
28. Output:
29. Total elements: 5

Pegembangan Perangkat Lunak dan Gim | 101


30. H
31. H
32. H
33. Total elements: 5
34. */
35.

Contoh kode penggunaan Contains():

1. using System;
2. using System.Collections.Generic;
3.
4. public class Program
5. {
6. public static void Main()
7. {
8. Queue<int> callerIds = new Queue<int>();
9. callerIds.Enqueue(1);
10. callerIds.Enqueue(2);
11. callerIds.Enqueue(3);
12. callerIds.Enqueue(4);
13.
14. Console.WriteLine(callerIds.Contains(2)); //true
15. Console.WriteLine(callerIds.Contains(10)); //false
16.
17. }
18. }
19.
20. /*
21. Output:
22. True
23. False
24. */
25.

102 | Pengembangan Perangkat Lunak dan Gim


Rangkuman

1. Struktur data statis membutuhkan lokasi memori yang tetap sehingga memori
harus dipesan terlebihdahulu sebelum digunakan. Pada struktur data dinamis
dibagi menjadi data array dan data record.Array adalah tipe data terstruktur
yang terdiri dari sejumlah komponen yang memiliki tipe data sama. Jenis arry
dibedakan menjadi 3 yaitu array 1 dimensi, array 2 dimensi, dan array
multidimensi.Record merupakan jenis tipe data terstruktur yang berisi
beberapa data, yang masing-masing dapat berlainan tipe termasuk bertipe
array
2. Struktur data dinamis membutuhkan alokasi memori sesuai banyaknya data
yang didefinisikan.hal ini akan menghemat memori.data tersimpan secara
acak dalam memori, sehingga untuk mengakses data tertentu dalam sebuah
struktur data dinamis memerlukan waktu yang agak lama karena harus dicari
mulai dari data pertama dalam struktur data tersebut. Struktur data dinamis
baik digunakan untuk data yang ukurannya sangat besar

Pegembangan Perangkat Lunak dan Gim | 103