• Tidak ada hasil yang ditemukan

Algoritma Dan Struktur Data II

N/A
N/A
Protected

Academic year: 2021

Membagikan "Algoritma Dan Struktur Data II"

Copied!
40
0
0

Teks penuh

(1)

Algoritma Dan Struktur Data II

List, Stack

Putuputraastawa@gmail.com

(2)

Beberapa Jenis Struktur Data

1. Array 1. Linear List 2. Stack 3. Queue 1. Apa ?

2. Bagaimana cara implementasinya ?

3. Queue

2. List

1. Connected List

2. Circular List

3. Doubly-linked List

4. Multi list structure

3. Tree Structure

(3)

Linear List

Linear List

(4)

Apakah Linear List itu ?

Sekumpulan elemen yang diatur secara terurut

] [ , ], 1 [ ], [ ], 1 [ , ], 2 [ ], 1 [ x x k x k x k x n x L + L

Linear List tidak sama dengan Connected-List

] [ , ], 1 [ ], [ ], 1 [ , ], 2 [ ], 1 [ x x k x k x k x n x L + L

(5)

Operasi pada Linear List

No. Operasi

1 Menambahkan sebuah elemen sebelum elemen ke-k 2 Menghapus elemen ke-k

2 Menghapus elemen ke-k

3 Membaca/menulis isi elemen ke-k 4 Mencari elemen dengan key tertentu

5 Menggabungkan beberapa list menjadi satu 6 Memecah sebuah list ke beberapa buah 7 Mengcopy sebuah list

(6)

List, Stack & Queue

• Tidak semua operasi list diperlukan pada setiap program

▫ Penentuan struktur data didasarkan pada operasi yang diperlukan saja agar bisa berjalan dengan efisien

• Pada sebuah Linear List, penyisipan dan penghapusan

elemen dapat dijalankan di sebarang posisi

• Pada sebuah Linear List, penyisipan dan penghapusan

elemen dapat dijalankan di sebarang posisi

• Bentuk khusus linear list:

Penambahan elemen dan penghapusannya dilakukan di posisi terdepan atau

posisi terbelakang saja

Stack Queue

(7)

List, Stack & Queue

• Pada sebuah Linear List, penyisipan dan penghapusan

elemen dapat dijalankan di sebarang posisi

• Penambahan dan penghapusan elemen pada stack/queue

dilakukan di posisi terdepan atau posisi terbelakang saja

1 2 3 4 5 6

1 2 3 4 5 6

List Stack

(8)

Stack

Stack

(9)
(10)

Apakah Stack itu ?

• Penambahan dan penghapusan elemen dilakukan pada

elemen list yang terletak di paling depan

• Yang dihapus adalah elemen yang paling terakhir

ditambahkan

• Nama lain: LIFO (Last In First Out)

• Operasi PUSH : Menambahkan elemen pada sebuah

stack

1

(11)

Apakah Stack itu ?

• Penambahan dan penghapusan elemen dilakukan pada

elemen list yang terletak di paling depan

• Yang dihapus adalah elemen yang paling terakhir

ditambahkan

• Nama lain: LIFO (Last In First Out)

• Operasi PUSH : Menambahkan elemen pada sebuah

stack

PUSH 2 top

(12)

Apakah Stack itu ?

• Penambahan dan penghapusan elemen dilakukan pada

elemen list yang terletak di paling depan

• Yang dihapus adalah elemen yang paling terakhir

ditambahkan ditambahkan

• Nama lain: LIFO (Last In First Out)

• Operasi PUSH : Menambahkan elemen pada sebuah

stack PUSH 1 2 3 bottom top

(13)

Apakah Stack itu ?

• Penambahan dan penghapusan elemen dilakukan pada

elemen list yang terletak di paling depan

• Yang dihapus adalah elemen yang paling terakhir

ditambahkan

• Nama lain: LIFO (Last In First Out)

• Nama lain: LIFO (Last In First Out)

• Operasi PUSH : Menambahkan elemen pada sebuah

stack PUSH 2 3 4 bottom top

(14)

Apakah Stack itu ?

• Penambahan dan penghapusan elemen dilakukan pada

elemen list yang terletak di paling depan

• Yang dihapus adalah elemen yang paling terakhir

ditambahkan

• Nama lain: LIFO (Last In First Out)

• Operasi PUSH : Menambahkan elemen pada sebuah

• Operasi PUSH : Menambahkan elemen pada sebuah

stack PUSH 1 2 3 4 5 bottom top

(15)

Apakah Stack itu ?

• Penambahan dan penghapusan elemen dilakukan pada

elemen list yang terletak di paling depan

• Yang dihapus adalah elemen yang paling terakhir

ditambahkan

• Nama lain: LIFO (Last In First Out)

• Operasi PUSH : Menambahkan elemen pada sebuah

• Operasi PUSH : Menambahkan elemen pada sebuah

stack PUSH 2 3 4 5 6 bottom top

(16)

Apakah Stack itu ?

• Penambahan dan penghapusan elemen dilakukan pada

elemen list yang terletak di paling depan

• Yang dihapus adalah elemen yang paling terakhir

ditambahkan

• Nama lain: LIFO (Last In First Out)

• Operasi POP : Menghapus sebuah elemen dari sebuah

• Operasi POP : Menghapus sebuah elemen dari sebuah

stack POP 1 2 3 4 5 6 bottom top

(17)

Apakah Stack itu ?

• Penambahan dan penghapusan elemen dilakukan pada

elemen list yang terletak di paling depan

• Yang dihapus adalah elemen yang paling terakhir

ditambahkan

• Nama lain: LIFO (Last In First Out)

• Operasi POP : Menghapus sebuah elemen dari sebuah

• Operasi POP : Menghapus sebuah elemen dari sebuah

stack POP 2 3 4 5 bottom top

(18)

Apakah Stack itu ?

• Penambahan dan penghapusan elemen dilakukan pada

elemen list yang terletak di paling depan

• Yang dihapus adalah elemen yang paling terakhir

ditambahkan

• Nama lain: LIFO (Last In First Out)

• Nama lain: LIFO (Last In First Out)

• Operasi POP : Menghapus sebuah elemen dari sebuah

stack POP 1 2 3 4 bottom top

(19)

Apakah Stack itu ?

• Penambahan dan penghapusan elemen dilakukan pada

elemen list yang terletak di paling depan

• Yang dihapus adalah elemen yang paling terakhir

ditambahkan

• Nama lain: LIFO (Last In First Out)

• Nama lain: LIFO (Last In First Out)

• Operasi POP : Menghapus sebuah elemen dari sebuah

stack

POP 2

3

bottom top

(20)

Apakah Stack itu ?

• Penambahan dan penghapusan elemen dilakukan pada

elemen list yang terletak di paling depan

• Yang dihapus adalah elemen yang paling terakhir

ditambahkan

• Nama lain: LIFO (Last In First Out)

• Nama lain LIFO (Last In First Out)

• Operasi POP : Menghapus sebuah elemen dari sebuah

stack POP 1 2 bottom top

(21)

Apakah Stack itu ?

• Penambahan dan penghapusan elemen dilakukan pada

elemen list yang terletak di paling depan

• Yang dihapus adalah elemen yang paling terakhir

ditambahkan

• Nama lain: LIFO (Last In First Out)

• Operasi POP : Menghapus sebuah elemen dari sebuah

• Operasi POP : Menghapus sebuah elemen dari sebuah

stack

POP

(22)

Apakah Stack itu ?

(23)

Stack Overflow & Stack Underflow

• Stack Overflow

Menambahkan data pada sebuah stack yang telah penuh

• Stack Underflow

• Stack Underflow

(24)

Operasi Stack

4 3 2 1 1 2 3 4 O U T I N

• Push : digunakan untuk menambah item pada stack pada tumpukan paling atas

• Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas

• Clear : digunakan untuk mengosongkan stack

• IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong

• IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh

(25)

Stack with Array of Struct

• Definisikan Stack dengan menggunakan suatu struct

• Definisikan konstanta MAX_STACK untuk

menyimpan maksimum isi stack

• Elemen struct Stack adalah array data dan top untuk

• Elemen struct Stack adalah array data dan top untuk

menadakan posisi data teratas

• Buatlah variabel tumpuk sebagai implementasi dari

struct Stack

• Deklarasikan operasi-operasi/function di atas dan buat

(26)

Program Stack

int stk[5];

(27)

Program Stack (2)

Inisialisasi Stack

• Pada mulanya isi top dengan -1, karena array dalam

bahasa C dimulai dari 0, yang berarti bahwa data stack adalah KOSONG!

• Top adalah suatu variabel penanda dalam Stack yang

menunjukkan elemen teratas data Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK yang menyebabkan stack PENUH!

(28)

Program Stack (2)

// inisialisasi stack stack()

Ilustrasi Stack pada saat inisialisasi!

stack() {

top=-1; }

(29)

Program Stack (3)

Fungsi IsFull

• Untuk memeriksa apakah stack sudah penuh?

• Dengan cara memeriksa top of stack, jika sudah sama

dengan MAX_STACK-1 maka full, jika belum (masih dengan MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full

(30)

Program Stack (4)

Ilustrasi Stack pada kondisi Full

// fungsi penambahan elemen stack // fungsi penambahan elemen stack

void push(int x) {

if(top > 4) {

cout <<"stack over flow"; return;

}

stk[++top]=x;

cout <<"Elemen stack : " <<x <<endl;

(31)

Program Stack (5)

Fungsi IsEmpty

• Untuk memeriksa apakah data Stack masih kosong?

• Dengan cara memeriksa top of stack, jika masih -1

• Dengan cara memeriksa top of stack, jika masih -1

maka berarti data Stack masih kosong!

//fungsi menampilkan elemen stack void display()

{

if(top<0) {

cout <<" stack Kosong"<<endl; return;

}

for(int i=top;i>=0;i--)

(32)

Program Stack (6)

Fungsi Push

• Untuk memasukkan elemen ke data Stack. Data yang

diinputkan selalu menjadi elemen teratas Stack (yang ditunjuk oleh ToS)

ditunjuk oleh ToS)

• Jika data belum penuh,

▫ Tambah satu (increment) nilai top of stack lebih dahulu setiap kali ada penambahan ke dalam array data Stack.

▫ Isikan data baru ke stack berdasarkan indeks top of stack yang telah di-increment sebelumnya.

(33)
(34)

//fungsi penghapusan elemen stack void pop()

{{

if(top <0) {

cout <<"stack under flow"; return;

}

cout <<"menghapus Elemen Stack : " <<stk[top--]<< endl;

(35)

Program Stack (8)

Fungsi Pop

• Untuk mengambil data Stack yang terletak paling atas

(data yang ditunjuk oleh TOS).

• Tampilkan terlebih dahulu nilai elemen teratas

stack dengan mengakses indeksnya sesuai dengan top of stacknya, baru dilakukan di-decrement nilai top of

(36)
(37)

//fungsi menampilkan elemen stack void display() { if(top<0) if(top<0) {

cout <<" stack Kosong"<<endl; return;

}

for(int i=top;i>=0;i--)

cout <<stk[i] <<" " << endl; }

(38)

Program Stack (10)

• Fungsi Print

• Untuk menampilkan semua elemen-elemen data Stack

• Dengan cara me-loop semua nilai array secara terbalik,

karena kita harus mengakses dari indeks array tertinggi karena kita harus mengakses dari indeks array tertinggi terlebih dahulu baru ke indeks yang lebih kecil!

(39)
(40)

Gambar

Ilustrasi Stack pada saat inisialisasi!

Referensi

Dokumen terkait

Daya listrik yang disediakan oleh PLTS sebesar 5000 W untuk pemakaian selama 10 jam, menggunakan panel surya sebanyak 40 panel, daya puncak setiap panel surya 250 WP,

Sebagaimana disebutkan dalam butir 13 Pasal 1 Undang-Undang Nomor 10 Tahun 1998 memberikan batasan pengertian prinsip syariah sebagai aturan perjanjian berdasarkan

PEMBELAJARAN TEMATIK TERHADAP KREATIVITAS GURU DI SD NEGERI SAMIRONO KECAMATAN GETASAN KABUPATEN SEMARANG TAHUN PELAJARAN 2010 / 2011“.. Skripsi ini penulis susun untuk memenuhi

ANALISIS KINERJA KEUANGAN PERUSAHAAN PERTAMBANGAN BATUBARA YANG TERDAFTAR.. DI BURSA EFEK

Akan tetapi hakim tetap pada Undang-Undang yang berlaku selama tidak ada perjanjian yang mengikat antara keduanya dalam membagi harta bersama selama dalam

[r]

dikuasai langsung oleh Negara dalam waktu yang tertentu guna.. perusahaan pertanian, perikanan

Organisasi sosial (social institution) dan pendidikan adalah suatu lembaga yang berkaitan dengan cara bagaimana seseorang berhubungan dengan orang lain,