Module S Data
Module S Data
STRUKTUR DATA
DOSEN PENGAMPU:
DIKE BAYU M, S. T., M. MT
TRI DEVI W, S. T., M. T.
Learning outcomes:
1. Mampu menjelaskan konsep dan implementasi array pada program
2. Mampu melakukan manipulasi data array: menambahkan item,
melakukan pencarian, dan menghapus item pada array
3. Mampu mengimplementasikan ordered array pada program.
4. Mampu mengimplementasikan binary search pada ordered array.
5. Mampu menyimpan dan manipulasi objek pada array.
IDENTITAS PRAKTIKAN
NIM : 3130022041
Nama Lengkap :
Kelas/ Hari/ Jam :
/ / Nomor komputer :
Nama Asisten :
Tugas Praktikum
A. PENDAHULUAN
1. Format penulisan code yang digunakan untuk mendeklarasikan sebuah array adalah:
TipeData namaVariable[ ] = new TipeData[panjang/ukuranArray];
Sedangkan format penulisan code untuk menambahkan item pada array yang telah
dideklarasikan adalah:
namaVariable[index]= value;
Tulis dan jalankan listing program berikut:
public class classArray {
}
}
Pada listing program tersebut, ukuran array yang dideklarasikan adalah 10. Insert
item dilakukan hingga index ke-4, artinya hanya terdapat 5 item.
Tuliskan output program tersebut dan jelaskan kenapa demikian!
jawaban
jawaban
Apakah item yang awal dimasukkan (pada listing no 1) masih tersimpan didalam
array? Jelaskan kenapa demikian?
jawaban
nElemen = 6;
}
}
Jalankan dan tuliskan penjelasan dari listing yang telah Anda lengkapi!
jawaban
5. Berikut ini adalah listing program array yang dituliskan dalam bentuk object
oriented programming. Class HighArray memiliki method untuk manipulasi array,
yaitu insert, find/search, dan delete serta method display untuk menampilkan isi
array. Method dalam class HighArray tersebut dipanggil dan dijalankan pada class
HighArrayApp.
Pahami listing berikut dengan menulis dan menjalankannya, kemudian tuliskan
penjelasan tiap barisnya!
class HighArray { Awal sebuah kelas bernama HighArray
int i;
for (i = 0; i < nElemen; i++)
{ if (value == arr[i]) {
break;
}
}
if (i == nElemen)
{ return false;
} else {
for (int j = i; j < nElemen; j++)
{ arr[j] = arr[j + 1];
}
nElemen--;
return true;
}
}
arr.insert(70);
arr.insert(80);
arr.insert(75);
arr.insert(55);
arr.insert(85);
arr.insert(25);
arr.insert(30);
arr.insert(00);
arr.insert(90);
arr.insert(40)
arr.display();
arr.delete(00);
arr.delete(80);
arr.delete(55);
arr.display();
}
}
Output program tersebut adalah….
jawaban
6. Tambahkan sebuah method size pada class HighArray yang mempu mengembalikan
nilai jumlah elemen array. Panggil method tersebut pada class HighArrayApp untuk
menampilkan jumlah elemen.
Tulis code dan penjelasannya!
jawaban
B. PRAKTIKUM
1. Pada listing nomer 5 (tugas pendahuluan), method insert digunakan untuk
menambahkan item pada cell yang belum terisi tanpa memberhatikan value item
yang ditambahkan sehingga elemen pada array disimpan secara tidak berurutan
(unordered).
Agar item dapat disimpan pada urutan yang sesuai dengan value-nya maka perlu
dilakukan pencarian posisi cell yang tepat bagi item yang akan dimasukkan dengan
cara membandingkan tiap item pada cell dengan item yang akan dimasukkan, yaitu
pencarian secara linier. Setelah cell tepat ditemukan, langkah selanjutnya adalah
menyiapkan cell tersebut untuk diisi jika sudah ada item yang tersimpan pada cell
tersebut. Hal ini bisa dilakukan dengan cara menggeser item yang memiliki value
lebih besar dari item yang akan dimasukkan, dengan demikian terdapat cell kosong
untuk diisi dengan item baru. Langkah-langkah insert item pada ordered array
ditunjukkan pada Gambar 1.1 berikut ini.
15 30 45 53 77 79 81
66 insert
15 30 45 53 77 79 81
15 30 45 53 66 77 79 81
Ordered Array
Tuliskan listing untuk method insert untuk menyimpan elemen array secara
berurutan (ordered)!
batasBawah batasAtas
batasBawahbatasAtas batasBawahbatasAtas
Range yang baru jika Key < arr[curIn] Range yang baru jika Key > arr[curIn]
3. Storing object
Item data pada real world tidak direpresentasikan dalam bentuk data primitive tapi
berupa record yang merupakan kombinasi dari beberapa field. Misalkan untuk
record personal, kita dapat menyimpan nama, tempat tanggal lahir, nomer telpon,
email, dsb. Untuk data mahasiswa, kita dapat menyimpan nim, nama, jurusan, asal,
dsb. Dalam java, record data biasanya direpresentasikan dengan sebuah class
object.
Berikut ini listing yang menunjukkan implementasi storing object. Terdapat tiga
class, yaitu class “Mahasiswa”, “DataArray”, dan “DataArrayApp”. Record yang
disimpan adalah data mahasiswa yang terdiri dari field nim, nama, dan asal. Record
mahasiswa ini direpresentasikan dalam sebuah class object dengan nama
“Mahasiswa”.
Tulis dan pahamilah listing program untuk menyimpan object berikut ini.
Output:
C. KESIMPULAN
Kesimpulan yang diperoleh dari pembahasan praktikum kali ini adalah:
1. Tentang unordered arrays dan ordered arrays
Learning outcomes:
1. Mampu menjelaskan langkah-langkah sorting algoritma bubble sort, insertion
sort, dan selection sort.
2. Mampu mengimplementasikan algoritma bubble sort, insertion sort, dan
selection sort pada program.
3. Mampu mengimplementasikan sorting object menggunakan algoritma bubble
sort, insertion sort, dan selection sort.
4. Mampu menjelelaskan perbandingan sorting algoritma: bubble sort, insertion
sort, dan selection sort.
IDENTITAS PRAKTIKAN
NIM :
Nama Lengkap :
Kelas/ Hari/ Jam :
/ / Nomor komputer :
Nama Asisten :
Tugas Praktikum
Tiga algoritma sorting sederhana yang dibahas pada modul ini adalah bubble sort,
selection sort, dan insertion sort. Ketiga algoritma tersebut menggunakan dua
langkah/tindakan yang terus dilakukan secara berulang hingga data berurutan. Dua
tindakan tersebut adalah:
1. membandingkan dua item
2. menukar (swap) dua item, atau menyalin (copy) satuitem
A. PENDAHULUAN
1. Algoritma sorting yang paling sederhana adalah bubble sort. Langkah sorting secara
ascending menggunakan bubble sort adalah sebagai berikut:
a. Bandingkan dua item
b. Jika item pertama (sebelah kiri) lebih besar daripada item kedua (sebelah
kanan), maka tukar kedua item tersebut
c. Pindah ke posisi kanan. Lakukan langkah a dan b hingga posisi sampai di
batas akhir
d. Ketika satu item telah berada sesuai urutan, ulangi langkah a-c hingga
semua item sesuai urutan.
...
{ int batas, i;
{ swap(i, i + 1);
arr[one] = arr[two];
arr[two] = temp;
...
Listing diatas adalah baris kode yang mengimplementasikan tiap langkah bubble
sort. Implementasikan baris kode tersebut ke dalam sebuah program sehingga dapat
digunakan untuk mengurutkan elemen array. Anda dapat menambahkan listing
tersebut pada class HighArray (listing 5 praktikum 1) yang dipanggil pada class
HighArrayApp. Atau anda juga dapat menuliskan listing ini pada satu class secara
terstruktur.
Insert 6 item pada array program tersebut. Tampilkan isi array sebelum dilakukan
pengurutan. Kemudian urutkan dan tampilkan isi array setelah pengurutan.
Jalankan program yang telah Anda buat dan tuliskan output program tersebut.
jawaban
2. Untuk sorting array yang memiliki 6 item, berapa jumlah perbandingan item yang
dilakukan hingga semua item sesuai urutan?
jawaban
3. Pada program nomer 1, tambahkan kode untuk menampilkan isi array setelah baris
kode pertukaran item (swap(i, i + 1);). Jalankan kembali dan amati bagaimana
proses pengurutan pada tiap iterasi. Tuliskan isi array pada 10 perulangan pertama.
Jelaskan!
jawaban
4. Jika Anda ingin melakukan sorting menggunakan algoritma bubble sort secara
descending, maka pada program nomer 1 bagian manakah yang harus diganti.
Tuliskan code-nya dan jelaskan!
jawaban
5. Algoritma sorting yang lain adalah selection sort. Langkah selection sort
untuk pengurutan secara ascending yaitu:
a. Cari item terkecil pada array
b. Letakkan item terkecil sesuai urutannya dengan cara menukar item
terkecil dengan item pada index awal
c. Geser posisi awal pencarian ke kanan.
d. Lakukan langkah a, b, dan c hingga semua item terurut.
Berikut ini listing untuk algoritma selection sort. Lengkapi sebagaimana soal nomor
1, gunakan data array yang sama, jalankan dan jelaskan tiap baris code pengurutan
berikut ini!
...
{ min = awal;
min = i;
swap(awal, min);
...
6. Pada listing nomor 5, tambahkan kode untuk menampilkan isi elemen pada array
setelah kode pertukaran (swap(awal, min);). Jalankan program, amati dan tulis
outputnya, kemudian jelaskan!
jawaban
7. Sedikit berbeda dengan dua algoritma sebelumnya, pada insertion sort, aksi yang
dilakukan adalah membandingkan dan meng-copy item. Berikut ini langkah
insertion sort untuk pengurutan secara ascending:
a. Tandai sebuah item sebagai batas antara partially sorted dan unsorted items.
b. Geser item pada partially sorted yang bernilai lebih besar dari pada item
yang ditandai pada langkah a.
c. Sisipkan item tersebut pada posisi yang sesuai di bagian partially sorted.
d. Ulangi langkah a-c hingga semua unsorted items telah disisipkan (insert) ke
sorted group.
Berikut ini listing untuk algoritma insertion sort. Lengkapi sebagaimana soal nomor
1, gunakan data array yang sama, jalankan dan jelaskan tiap baris code pengurutan
berikut ini!
...
{ int i, curIn;
i = curIn;
i--;
arr[i] = temp;
...
8. Pada listing nomor 7, tambahkan kode untuk menampilkan isi elemen pada array
setelah kode pergeseran item (arr[i] = arr[i - 1];) dan setelah kode insert item
(arr[i] = temp;). Jalankan program, amati dan tulis outputnya hingga 4 kali tahap
penyisipan, kemudian jelaskan!
jawaban
B. PRAKTIKUM
1. Sorting Object
Pada praktikum 1 (Arrays), Anda telah mengiimplementasikan storing object
“mahasiswa”. Implementasikan algoritma sorting untuk sorting object
“Mahasiswa” berdasarkan NIM. Yaitu dengan cara menambahkan method
BubbleSort( ), SelectionSort( ), dan InsertionSort( ) sebagaimana yang dituliskan
pada tugas pendahuluan modul ini (dengan sedikit penyesuaian) pada class
DataArray (listing nomer 3 parktikum 1). Method tersebut dipanggil pada class
DataArrayApp.
Keterangan:
- Praktikan dengan NIM genap mengerjakan BubbleSort( ) dan SelectionSort( )
- Praktikan dengan NIM ganjil mengerjakan BubbleSort( ) dan InsertionSort( )
2. Lexicographical Comparisons
NIM pada object mahasiswa adalah variable bertipe long. Anda dapat
membandingkan item dengan tipe long dengan menggunakan operator equality
relational. Pada sorting object, kita perlu mengetahui cara membandingkan item
dengan tipe String (object). Misal, adakalanya pencarian record mahasiswa dapat
menggunakan field “nama” sebagai key. Untuk kondisi ini, kita dapat menggunakan
method compareTo() yang ada pada class String.
Method compareTo() membandingkan dua string secara leksikograf (alfabetis).
Perbandingan ini didasarkan pada nilai Unicode dari masing-masing karakter dalam
String. Deretan karakter objek String ini dibandingkan secara leksikograf dengan
deretan karakter string argumen.
Value yang dikembalikan dalam pemanggilan method ini adalah nilai 0 jika objek
string sama dengan string argumen; nilai kurang dari 0 jika objek string secara
leksikografis kurang dari string argumen; dan nilai lebih besar dari 0 jika objek
string secara leksikograf lebih besar dari string argumen. (lihat Tabel 2.1)
Keterangan:
- Praktikan dengan NIM genap mengerjakan InsertionSortbyName( )
- Praktikan dengan NIM ganjil mengerjakan SelectionSortbyName( )
Gambar 2.1 Contoh output sorting object mahasiswa berdasarkan field NIM dan nama
C. KESIMPULAN
Kesimpulan yang diperoleh dari pembahasan praktikum kali ini adalah:
1. Tentang perbandingan algoritma sorting bubble, selection, dan insertion
Learning outcomes:
1. Mampu menjelaskan konsep LIFO pada Stacks dan FIFO pada Queues
2. Mampu mengimplementasikan operasi dasar Stack dan Queue (push, pop,
peek) dengan struktur data Array.
3. Mampu menjelaskan implementasi Stack pada parsing arithmetic expressions.
4. Mampu menjelaskan dan mengimplementasikan circular Queue.
5. Mampu mengimplementasikan struktur data Stacks dan Queues pada program.
IDENTITAS PRAKTIKAN
NIM :
Nama Lengkap :
Kelas/ Hari/ Jam :
/ / Nomor komputer :
Nama Asisten :
Tugas Praktikum
Struktur data yang dibahas pada praktikum kali ini adalah Stacks dan Queues.
Selain itu, ada pula struktur data yang sejenis yaitu priority queue (tidak dibahas pada
praktikum ini). Fungsi ketiga struktur data ini lebih sering digunakan sebagai
programmer’s tool. Yaitu, digunakan sebagai alat bantu konseptual penyimpanan data,
bukan sebagai penyimpanan data itu sendiri.
Stack, queue, dan priority queue lebih abstrak dibandingkan dengan struktur
penyimpanan data seperti arrays dan beberapa yang lainnya. Mekanisme mendasar
untuk mengimplementasikan stack, queue, dan priority queue dapat berupa Arrays
sebagaimana yang ditunjukkan pada pembahasan modul ini. Selain itu, dapat juga
menggunakan “Linked list”. Mekanisme mendasar untuk Priority queue dapat juga
berupa salah satu jenis khusus dari struktur data tree yang disebut dengan heap.
Pada struktur data Arrays, semua item dapat diakses, sedangkan pada stack,
queue, dan priority queue akses tersebut dibatasi, yaitu hanya satu item yang dapat
diakses untuk dibaca atau dihapus.
A. PENDAHULUAN
1. Stacks (tumpukan) merupakan suatu susunan koleksi data dimana data yang dapat
ditambahkan dan dihapus selalu dilakukan pada bagian akhir data, yang disebut
dengan top of stack. Dengan kata lain, stack hanya mengijinkan akses pada item
yang terakhir dimasukkan.
Stacks bersifat LIFO (Last In First Out). Jelaskan sifat LIFO pada stacks dan
gambarkan skema lengkap dari LIFO!
jawaban
2. Operasi utama pada Stacks yaitu push dan pop. Selain dua operasi tersebut, juga
terdapat operasi peek pada Stacks. Jelaskan masing-masing dari tiga operasi
tersebut!
jawaban
{ maxSize = size;
top = -1;
{ stackArray[++top] = item;
return stackArray[top--];
return stackArray[top];
items");
theStack.push(20);
theStack.push(40);
theStack.push(60);
theStack.push(80);
in the stack");
while (!theStack.isEmpty()) {
jawaban
4. Setelah anda memahami tiap baris listing nomer 3. Tuliskan kesimpulan logika
untuk setiap method pada class Stack: method push(), pop(), peek(),
isEmpty(), dan isFull()!
jawaban
5. Salah satu aplikasi yang menggunakan struktur penyimpanan stack adalah parsing
ekspresi aritmatika. Tuliskan langkah manual untuk merubah notasi infix:
U * ( I + N ) / M ^L – G
menjadi notasi postfix menggunakan teknik stack!
jawaban
6. Queues (antrian) adalah struktur data yang hampir mirip dengan stack.
Perbedaannya adalah pada queues, akses item bagi yang pertama dimasukkan.
Queues bersifat FIFO (First In First Out). Jelaskan sifat FIFO pada queues dan
gambarkan skema lengkap dari FIFO!
jawaban
class Queue {
{ this.maxSize = size;
queArray = new
long[maxSize]; front = 0;
rear = -1;
nItems = 0;
{ if (rear == maxSize - 1) {
rear = -1;
queArray[++rear] = value;
nItems++;
if (front == maxSize) {
front = 0;
nItems--;
return temp;
{ return queArray[front];
{ return (nItems ==
maxSize);
{ return nItems;
theQueue.insert(10);
theQueue.insert(20);
theQueue.insert(30);
theQueue.insert(40);
theQueue.remove();
theQueue.remove();
theQueue.remove();
theQueue.insert(50);
theQueue.insert(60);
theQueue.insert(70);
theQueue.insert(80);
while (!theQueue.isEmpty()){
long n = theQueue.remove();
System.out.print(n);
System.out.print(" ");
System.out.println("");
jawaban
8. Setelah anda memahami tiap baris listing nomer 7. Tuliskan kesimpulan logika
untuk setiap method pada class Queue: method insert(), remove(), peek(),
isEmpty(), dan isFull()!
jawaban
jawaban
B. PRAKTIKUM
1. Implementasi Stack
Salah satu contoh program sederhana yang mengimplementasikan stack adalah
program pembalik kata. Stack digunakan untuk membalik huruf. Langkah pertama,
tiap katakter pada String input diekstrak dan dimasukkan kedalam stack. Kemudian
tiap karakter tersebut dikeluarkan dan ditampilkan sebagai output. Karena memiliki
sifat LIFO, maka keluaran stack adalah karakter-karakter dengan urutan yang
berkebalikan dengan input.
Buatlah program pembalik kata tersebut dengan membuat 3 class, yaitu:
a. class “stack”. Class ini digunakan untuk menyimpan setiap karakter input pada
stack array. Berisi constructor dan method-method operasi stack.
b. class “pembalik”. Class ini digunakan untuk membaca setiap karakter input,
menyimpan karakter dengan memanggil method push() pada class “stack”
(point a), dan membalik input dengan memanggil method pop() pada class
“stack” (point a). Tiap karakter keluaran dari stack tersebut
disimpan/ditambahkan (append) pada String output sebagai keluaran yang akan
ditampilkan.
c. class “AppPembalik”. Class ini berisi method main. Digunakan untuk deklarasi
dan inisialisasi input, memanggil class “pembalik” untuk membalik input dan
mendapatkan output kata yang telah dibalik, serta menampilkan output pada
console.
Untuk membaca tiap karakter String, anda dapat mengunakan method charAt()
yang terdapat pada class String, misal StringInput.charAt(index).
Contoh program pembalik kata ditunjukkan pada Gambar 3.1. Anda dapat
mengerjakan sebagaimana Gambar 3.1 (a) dan point tambahan akan diberikan jika
Anda mengerjakan sebagaimana Gambar 3.1 (b).
(a)
(b)
Gambar 3.1 Contoh output program pembalik kata. (a) String input diinisialisasi secara
langsung pada listing program (hardcode). (b) String input didapat dari masukan
dengan keyboard, program dapat membaca dan membalikkan input secara berulang-
ulang
2. Implementasi Queue
Implementasi queue banyak didunia nyata, sebagaimana antrian. Buatlah program
simulasi antrian dengan mengimplementasikan Queue Stack. Simulasi antrian
menunjukkan (lihat Gambar 3.2):
- penambahan objek pada daftar antrian. Lakukan beberapa kali hingga antrian
penuh. Ketika objek ditambahkan pada antrian yang penuh maka program akan
menampilkan keterangan antrian penuh.
- Menampilkan isi antrian
- Satu persatu objek keluar antrian hingga antrian kosong
C. KESIMPULAN
Kesimpulan yang diperoleh dari pembahasan praktikum kali ini adalah:
1. Tentang konsep dan implementasi Stack
Learning outcomes:
1. Mampu menjelaskan empat macam linked list yaitu linier singly-linked list,
linier doubly-linked list, circular singly-linked list, dan circular doubly-linked
list.
2. Mampu mengimplementasikan singly-linked list
3. Mampu mengimplementasikan doubly-linked list
4. Mampu mengimplementasikan Stacks pada struktur data linked list
5. Mampu mengimplementasikan Queues pada struktur data linked list
IDENTITAS PRAKTIKAN
NIM :
Nama Lengkap :
Kelas/ Hari/ Jam :
/ / Nomor komputer :
Nama Asisten :
Tugas Praktikum
Linked List adalah salah satu bentuk struktur data, berisi kumpulan data (node)
yang tersusun secara sekuensial, saling sambung-menyambung, dinamis dan tidak
terbatas. Pada Linked List, setiap item berada di dalam sebuah node atau object link.
Setiap objek Link memuat sebuah referensi (biasa disebut next) menuju link
setelahnya pada list. Pada bahasa pemrograman C, referensi disini biasa disebut dengan
pointer.
A. PENDAHULUAN
1. Dalam pengaplikasiannya, secara struktur link, linked list dibagi menjadi 2 macam,
yaitu :
a. Singly-Linked List, merupakan list dengan penghubung 1 referensi antar data
yang menunjuk data selanjutnya (next).
b. Doubly-Linked List, merupakan list dengan penghubung 2 referensi antar data
yang menunjuk data sebelum (prev) dan setelahnya (next).
Dan dari 2 jenis di atas, secara bentuk list yang terbentuk, masing-masing dapat
diaplikasikan dengan 2 bentuk, yaitu :
a. Linear: List yang berbentuk linear dengan head/first sebagai penunjuk awal list
dan akan diteruskan dengan obyek-obyek yang saling berhubungan, diakhiri
dengan tail/ last sebagai penunjuk akhir list, yang mana data terakhir ini akan
memiliki referensi null sebagai indikator akhir list.
b. Circular: List yang berbentuk circular dengan head/first sebagai penunjuk awal
list dan akan diteruskan dengan obyek-obyek yang saling berhubungan, diakhiri
dengan tail/ last sebagai penunjuk akhir list. Bedanya akhir list akan memiliki
referensi yang akan menunjuk kembali ke awal list (head/first) dan atau
head/first pun akan memiliki referensi yang menunjuk bahwa data sebelumnya
adalah tail/last list.
Sehingga, dapat dikatakan terdapat 4 macam struktur linked list, yaitu linier singly-
linked list, linier doubly-linked list, circular singly-linked list, dan circular-doubly
linked list. Dari ke-empat macam struktur linked list tersebut, gambarkan ilustrasi
masing-masing struktur linked list tersebut sehingga tampak isi objek link dan
hubungan tiap link!
jawaban
2. Berikut ini listing program yang menunjukkan implementasi linier singly-linked list.
class Link {
{ this.Data = Data;
System.out.print(Data +” ");
class LinkedList {
public LinkedList() {
first = null;
newLink.next = first;
first = newLink;
first = first.next;
return temp;
{ if (current.next ==
null) {
return null;
} else {
current = current.next;
return current;
{ if (current.next ==
null) {
return null;
} else {
previous = current;
current = current.next;
if (current == first)
{ first =
first.next;
} else {
previous.next = current.next;
return current;
System.out.println("List(first
-->last):");
current.displayLink();
current = current.next;
System.out.println("");
LinkedList();
theList.insertFirst(22);
theList.insertFirst(44);
theList.insertFirst(66);
theList.insertFirst(88);
theList.displayList();
while (!theList.isEmpty()) {
Link aLink =
theList.deleteFirst();
System.out.print("Deleted ");
aLink.displayLink();
System.out.println("");
theList.displayList();
theList.insertFirst(33);
theList.insertFirst(55);
theList.insertFirst(77);
theList.insertFirst(88);
theList.displayList();
Link f = theList.find(77);
if (f != null) {
System.out.println("ketemu..."
+ f.Data);
} else {
System.out.println("link tidak
ditemukan");
Link d = theList.delete(88);
if (d != null) {
System.out.println("hapus link
} else {
System.out.println("link tidak
ditemukan");
theList.displayList();
jawaban
3. Pada class Link (listing nomor 2) terdapat deklarasi variable “ next” yang bertipe
objek Link (sama dengan nama class tersebut). Variable tersebut tidak di-
inisialisasi dengan value tertentu. Jelaskan maksud dan fungsi dari variable next
pada baris public Link next;
jawaban
jawaban
jawaban
jawaban
class Link {
{ this.Data = Data;
class DoublyLinkedList
public DoublyLinkedList()
{ first = null;
last = null;
if (isEmpty()) {
last = newLink;
} else {
first.previous = newLink;
newLink.next = first;
first = newLink;
if (isEmpty()) {
first = newLink;
} else {
last.next = newLink;
newLink.previous = last;
last = newLink;
if (first.next == null) {
last = null;
} else {
first.next.previous = null;
first = first.next;
return temp;
if (first.next == null)
{ first = null;
} else {
last.previous.next = null;
last = last.previous;
return temp;
int Data) {
current = current.next;
if (current == null) {
return false;
if (current == last) {
newLink.next = null;
last = newLink;
} else {
newLink.next = current.next;
current.next.previous = newLink;
newLink.previous = current;
current.next = newLink;
return true;
}
public Link deleteKey(int key)
current = current.next;
if (current == null) {
return null;
if (current == first)
{ first =
current.next;
} else {
current.previous.next =
current.next;
if (current == last) {
last = current.previous;
} else {
current.next.previous =
current.previous;
return current;
}
public void displayForward() {
System.out.print("List ”
+ “(first-->last): ");
current.displayLink();
current = current.next;
System.out.println("");
System.out.print("List ”
+ “(last-->first): ");
current.displayLink();
current = current.previous;
System.out.println("");
} // akhir class
{ DoublyLinkedList theList =
new DoublyLinkedList();
theList.insertFirst(22);
theList.insertFirst(44);
theList.insertFirst(66);
theList.displayForward();
theList.insertLast(11);
theList.insertLast(33);
theList.insertLast(55);
theList.displayForward();
theList.displayBackward();
theList.deleteFirst();
theList.displayForward();
theList.deleteLast();
theList.displayForward();
theList.deleteKey(11);
theList.displayForward();
theList.insertAfter(22, 77);
theList.insertAfter(33, 88);
theList.displayForward();
8. Dari penjelasan tiap bagian yang Anda tuliskan pada nomor 7, tuliskan kesimpulan
logika yang digunakan pada tiap method: insertFirst(), insertLast(),
insertAfter(), deleteFirst(), deleteLast(), deleteKey()!
jawaban
B. PRAKTIKUM
C. KESIMPULAN
Kesimpulan yang diperoleh dari pembahasan praktikum kali ini adalah:
1. Tentang perbandingan 4 macam struktur linked list, yaitu linier singly-linked list,
linier doubly-linked list, circular singly-linked list, dan circular-doubly linked
list.