15 Stack Queue-In - Class v.1.03

Anda mungkin juga menyukai

Anda di halaman 1dari 52

UNIVERSITAS

YA R S I

Stack & Queue

Struktur Data dan Algoritma


Andreas Febrian, Ph.D.

Herika Hayurani, M.Kom.

Content by:
Andreas F., Herika H., M. Faturrachman, and Nova E.D.
Image(s):
unsplash.com
http://unsplash.com/ Desain by Arksnet – Desain Modified by Andreas F.
UNIVERSITAS
YA R S I 15’ Review

REVIEW

Apa yang kalian pelajari minggu lalu?

Image(s):
http://unsplash.com/ 2
UNIVERSITAS
YA R S I Soal 1

Apa perbedaan antara data dengan struktur data?

3
UNIVERSITAS
YA R S I Soal 2

?
java.util.LinkedList<String> text = Apa keluaran dari
new java.util.LinkedList<>(); potongan program
berikut
text.add("will");
text.add("best");
text.add("of me");
text.add(1, "be");
text.addFirst("I");
text.add(3, "the");
text.add(5, "version");
text.add(text.getLast().substring(3));
text.set(text.size() - 2, "of");

System.out.println(text);

4
UNIVERSITAS
YA R S I Soal 3

4 newData

1 3 7 9

current

Bagaimana kode untuk menyisipkan 4 di antara 3 dan 7?

5
UNIVERSITAS
YA R S I Soal 4

4 newData

1 3 7 9

current

Bagaimana kode untuk menyisipkan 4 di antara 3 dan 7


jika setiap node hanya memiliki alamat node
berikutnya (next)?

6
UNIVERSITAS
YA R S I Soal 5


Kesalahan apa yang
ada pada potongan
kode berikut
// asumsikan list merupakan sebuah LinkedList yang
?
// didefinisikan pada kode sebelum ini
NodeSDA current = list.getFirst().next.next;

Integer data = 10;

// sisipkan data baru ke setelah current


data.next = current.next;
data.prev = current;
current.next.prev = data;
current.next = data;

7
UNIVERSITAS
YA R S I Soal 6

Apa perbedaan antara LinkedList dan LinkedListSDA?

8
UNIVERSITAS
YA R S I

Bagaimana caranya supaya kita bisa


memahami kodingan dengan mudah? dan
supaya bisa membuat kodingan dari nol?

Image(s):
https://pixabay.com/ 9
UNIVERSITAS
YA R S I

Tidak ada jalan pintas untuk bisa


memahami kode program dengan mudah
dan agar bisa membuat program dari nol.

Semangat untuk lebih sering latihan,


berpikir secara bertahap dan logis, dan
tidak mudah menyerah!

Image(s):
https://www.fotolia.com/ 10
UNIVERSITAS
YA R S I

Kenapa di yarsi tidak ada mata kuliah


internet marketing, sosial marketing
atau digital analysist,
khususnya di era industri 4.0?

Image(s):
https://pixabay.com/ 11
UNIVERSITAS
YA R S I

Mata kuliah harus disesuaikan dengan


program studi, jadi tidak bisa memasukkan
semua mata kuliah yang mungkin
(seperti gado-gado).

- Ketua Tim Kurikulum Prodi TI -

Image(s):
https://www.fotolia.com/ 12
UNIVERSITAS
YA R S I

FTI ingin lebih mengusung teknologinya.


Kuliah lainnya bisa masuk sebagai kuliah
pilihan, contoh fintech (sudah diusulkan),
walau fokus di teknologi bukan finance.
Internet marketing, sosial marketing lebih
cocok untuk mahasiswa marketing.

- Dekan FTI -

Image(s):
https://www.fotolia.com/ 13
UNIVERSITAS
YA R S I

Angkatan 2018 boleh membuat acara


seminar dan mengundang pakar yang
sesuai ketertarikan dan sejalan dengan
semangat FTI. FTI akan memfasilitasi
tempat dan honor sesuai aturan di UY.

- Dekan FTI -

Image(s):
https://www.fotolia.com/ 14
UNIVERSITAS
YA R S I Topik

Tugas 4 & Pengumuman

Review ArrayList

LinkedList

15
Tugas 4

UNIVERSITAS
YA R S I
Image(s):
http://priyanka2787.blogspot.com/ 16
UNIVERSITAS
YA R S I Tugas 4

Akan tersedia di e-learning pada 29 Maret 2019. Tugas


kelas A, B, dan C akan berbeda.

17
UNIVERSITAS
YA R S I

Pengumuman

18
UNIVERSITAS
YA R S I Nilai Bonus Penuh

1. Mayrizka Rahmadani (7.0 poin)


2. Siti Haswy Raudhahtul Farhah (5.5 poin)
3. Fajar Agung Purnama (5.0 poin)
4. Fuady Wahyudi (5.0 poin)
5. Dwi Mustikasari (5.0 poin)
6. Alief Fauzan (5.0 poin)
7. Farah Amelia Hanifah (5.0 poin)

19
UNIVERSITAS
YA R S I Transfer Bonus

Nilai bonus dapat ditransfer ke mahasiswa


lain walau beda kelas, paling lambat di
minggu terakhir kuliah (i.e., sebelum
minggu UAS)

Image(s):
https://www.fotolia.com/ 20
UNIVERSITAS
YA R S I Ujian 1

Mahasiswa yang memperoleh nilai ujian 1


(awal, bukan perbaikan) >= 60 akan
mendapatkan satu bonus poin.

Image(s):
https://www.fotolia.com/ 21
UNIVERSITAS
YA R S I Ujian 2 & 3

Mahasiswa yang memperoleh nilai ujian 2


(awal, bukan perbaikan) >= 70 akan
mendapatkan satu bonus poin.

Mahasiswa yang memperoleh nilai ujian 3


(awal, bukan perbaikan) >= 75 akan
mendapatkan satu bonus poin.

Image(s):
https://www.fotolia.com/ 22
Image(s):
http://unsplash.com/

Stack

UNIVERSITAS
YA R S I
23
UNIVERSITAS
YA R S I Stack

Sebuah struktur data yang menerapkan


konsep LIFO (last-in-first-out).
Contoh: tumpukan kartu ketika bermain
cangkulan atau tumpukan baju bersih.

https://docs.oracle.com/javase/10/docs/api/java/util/Stack.html
meaaw?

Image(s):
https://id.pinterest.com/ 24
UNIVERSITAS
YA R S I Soal 7

Sebutkan tiga contoh lain penerapan LIFO di dunia nyata!

25
UNIVERSITAS
YA R S I Import Stack

Import Stack dari package java.util; tambahkan baris


berikut di awal program (sebelum deklarasi kelas):

import java.util.Stack;

Asumsikan Stack sudah di-import untuk semua


pertanyaan (di dalam slide)!

26
UNIVERSITAS
YA R S I Prilaku Stack
Stack<String> stack = new Stack<>();
stack.push("I");
stack.push("will"); stack cheat
will
not
I
stack.push("not"); will
not
I
stack.push("cheat"); will
I
System.out.println(stack);
I
System.out.print(stack.pop() + " ");
System.out.print(stack.pop() + " - ");
System.out.println(stack);

System.out.print(stack.peek() + " - ");


System.out.println(stack);

[I, will, not, cheat]


Output:

cheat not - [I, will]


will - [I, will]
27
UNIVERSITAS
YA R S I Soal 8

Jelaskan perbedaan prilaku method push, pop, dan peek!

28
UNIVERSITAS
YA R S I Soal 9

?
java.util.Stack<String> stack = Apa keluaran dari
new java.util.Stack<>(); potongan program
berikut
stack.push("IT");
stack.push("can do");
stack.push("you");

System.out.println(stack.pop() + " "


+ stack.pop() + " " + stack.pop());

System.out.println(stack);

29
UNIVERSITAS
YA R S I Soal 10

?
java.util.Stack<String> stack = Apa keluaran dari
new java.util.Stack<>(); potongan program
stack.push("I"); berikut
stack.push("will");
stack.push("love you");

java.util.Stack<String> stack2 =
new java.util.Stack<>();
stack2.push(stack.pop());
stack2.push(",");
stack2.push(stack.pop());
stack2.push(stack.pop());

System.out.println(stack2);

30
UNIVERSITAS
YA R S I Soal 11

?
java.util.Stack<Integer> stack = Apa keluaran dari
new java.util.Stack<>(); potongan program
berikut
stack.push(2);
stack.push(4);
stack.push(3);
stack.push(stack.pop() * stack.pop());
stack.push(stack.pop() + stack.pop());

System.out.println(stack.pop());

31
UNIVERSITAS
YA R S I Method Stack

Modifier and Type Method and Description


boolean empty()
Tests if this stack is empty.
E peek()
Looks at the object at the top of this stack without removing it
from the stack.
E pop()
Removes the object at the top of this stack and returns that
object as the value of this function.
E push​(E item)
Pushes an item onto the top of this stack.
int search​(Object o)
Returns the 1-based position where an object is on this stack.

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Stack.html
32
UNIVERSITAS
YA R S I Soal 12

?
java.util.Stack<String> stack = Apa keluaran dari
new java.util.Stack<>(); potongan program
berikut
System.out.println(stack.empty());
stack.push(null);
System.out.println(stack.pop());

33
UNIVERSITAS
YA R S I Soal 13
java.util.Stack<String> stack =
new java.util.Stack<>();

stack.push("something");
Apakah error yang
ada pada potongan
program berikut ?
System.out.println(stack.empty());
System.out.println(stack.pop());
System.out.println(stack.pop());

34
UNIVERSITAS
YA R S I

Any
Question(s)?

Image(s):
https://www.animaker.com/ 35
Image(s):
http://unsplash.com/

Queue

UNIVERSITAS
YA R S I
36
UNIVERSITAS
YA R S I Queue

Sebuah struktur data yang menerapkan


konsep FIFO (first-in-first-out).
Contoh: antrian di bank atau kasir.

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/
java/util/Queue.html
meaaw?

Image(s):
https://id.pinterest.com/ 37
UNIVERSITAS
YA R S I Soal 14

Sebutkan tiga contoh lain penerapan FIFO di dunia nyata!

38
UNIVERSITAS
YA R S I Java Queue

Java memiliki sebuah kelas Queue namun


dengan jenis interface. Artinya, kelas ini
tidak bisa langsung digunakan seperti
halnya Stack. Untungnya, LinkedList meng-
implements kelas Queue.

Image(s):
https://www.fotolia.com/ 39
UNIVERSITAS
YA R S I Prilaku Queue
LinkedList<String> queue = new LinkedList<>();
queue.add("I");
queue will
not
I
queue.add("will");
queue.add("not"); cheat
will
not
queue.add("cheat"); cheat
not
System.out.println(queue); cheat

System.out.print(queue.poll() + " ");


System.out.print(queue.poll() + " - ");
System.out.println(queue);

System.out.print(queue.element() + " - ");


System.out.println(queue);

[I, will, not, cheat]


Output:

I will - [not, cheat]


not - [not, cheat]
40
UNIVERSITAS
YA R S I Soal 15

Apa perbedaan antara push dan add?

41
UNIVERSITAS
YA R S I Soal 16

Apa perbedaan antara pop dan poll?

42
UNIVERSITAS
YA R S I Soal 17

?
java.util.LinkedList<String> queue = Apa keluaran dari
new java.util.LinkedList<>(); potongan program
berikut
queue.add("Yesterday");
queue.add("is");
queue.add("not");
queue.add("today");
System.out.println(queue);

System.out.println(queue.poll() + " "


+ queue.poll() + " " + queue.poll() + " "
+ queue.poll());

System.out.println(queue);

43
UNIVERSITAS
YA R S I Method Queue

Modifier and Type Method and Description


boolean add​(E e)
Inserts the specified element into this queue if it is possible to do
so immediately without violating capacity restrictions, returning
true upon success and throwing an IllegalStateException if no
space is currently available.
E element()
Retrieves, but does not remove, the head of this queue.
E poll()
Retrieves and removes the head of this queue, or returns null if
this queue is empty.
E remove()
Retrieves and removes the head of this queue.

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Queue.html
44
UNIVERSITAS
YA R S I

LinkedList-kan memiliki method


lainnya, seperti add(int, E),
addFirst(E), dan remove(int), bisakah
kita menggunakannya ketika
memanfaatkannya sebagai Queue?

Image(s):
https://www.dreamstime.com/ 45
UNIVERSITAS
YA R S I Soal 18

?
java.util.LinkedList<String> queue = Apa keluaran dari
new java.util.LinkedList<>(); potongan program
berikut
String text = "I am smart and I know IT";

queue.add("great");
queue.add(queue.getFirst().substring(3));
queue.addFirst(text.substring(0, 4));
queue.add(text.substring(text.length() - 2));

System.out.println(queue);

46
UNIVERSITAS
YA R S I

Setelah membaca LinkedList API,


ternyata LinkedList juga
mengimplementasikan konsep
Stack! Hmm… menarik..

Image(s):
https://www.dreamstime.com/ 47
UNIVERSITAS
YA R S I Soal 19

?
java.util.LinkedList<String> list = Apa keluaran dari
new java.util.LinkedList<>(); potongan program
berikut
list.add("myself");
list.add("me");
list.add(2, "!");
list.poll();
list.addFirst("fantastic");
list.push("the");
list.push("the");
list.pop();

System.out.println(list);

48
UNIVERSITAS
YA R S I

Any
Question(s)?

Image(s):
https://www.animaker.com/ 49
UNIVERSITAS
YA R S I Soal 20

Apa saja persamaan dan perbedaan stack dan queue?

50
UNIVERSITAS
YA R S I Soal 21

Apa persamaan dan perbedaan struktur data ArrayList,


LinkedList, Stack, dan Queue?

51
UNIVERSITAS
YA R S I

Image(s):
https://www.istockphoto.com/ 52

Anda mungkin juga menyukai