Stack

16
BAB I PENDAHULUAN 1.1 Latar Belakang Stack pada Struktur Data adalah sebagai tumpukan dari benda, sekumpulan data yang seolah-olah diletakkan di atas data yang lain, koleksi dari objek-objek homogen, atau Suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja,. Struktur data antrean atau queue adalah suatu bentuk khusus dari linear list, dengan operasi penyisipan (insertion) hanya diperbolehkan pada salah satu sisi, yang disebut sisi belakang (REAR), dan operasi penghapusan (deletion) hanya diperbolehkan pada sisi lainnya, yang disebut sisi depan (FRONT), dari list. Binary Tree adalah struktur data yang hampir mirip juga dengan Linked List untuk menyimpan koleksi dari data. Linked List dapat dianalogikan sebagai rantai linier sedangkan Binary Tree bisa digambarkan sebagai rantai tidak linier. Sungguh penting bagi kita untuk mempelajari beberapa bagian ini dr struktur data. Salah satu kosep yang sangat berguna dalam ilmu komputer. Dalam hal ini saya mencoba mengenali bagaimana stack, queue dan tree sangat berguna dan memainkan peranan penting dalam pemograman dan bahasa pemogramam. 1.2 Rumusan Masalah 1. Apa itu Stack, Queue dan Tree? 2. Apa saja pembagian yang terdapat dalam Stack, Queue dan Tree? 1.3 Tujuan Untuk mengenal lebih jauh pengertian dan pembahasan dari bagian Struktur data yg terfokus pada Stack, Queue dan Tree. Stack, Queue dan Tree Page 1

description

TI

Transcript of Stack

BAB IPENDAHULUAN

1.1 Latar BelakangStack pada Struktur Data adalah sebagai tumpukan dari benda, sekumpulan data yang seolah-olah diletakkan di atas data yang lain, koleksi dari objek-objek homogen, atau Suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja,. Struktur data antrean atau queue adalah suatu bentuk khusus dari linear list, dengan operasi penyisipan (insertion) hanya diperbolehkan pada salah satu sisi, yang disebut sisi belakang (REAR), dan operasi penghapusan (deletion) hanya diperbolehkan pada sisi lainnya, yang disebut sisi depan (FRONT), dari list. Binary Tree adalah struktur data yang hampir mirip juga dengan Linked List untuk menyimpan koleksi dari data. Linked List dapat dianalogikan sebagai rantai linier sedangkan Binary Tree bisa digambarkan sebagai rantai tidak linier. Sungguh penting bagi kita untuk mempelajari beberapa bagian ini dr struktur data. Salah satu kosep yang sangat berguna dalam ilmu komputer. Dalam hal ini saya mencoba mengenali bagaimana stack, queue dan tree sangat berguna dan memainkan peranan penting dalam pemograman dan bahasa pemogramam.

1.2 Rumusan Masalah1. Apa itu Stack, Queue dan Tree?2. Apa saja pembagian yang terdapat dalam Stack, Queue dan Tree?

1.3 TujuanUntuk mengenal lebih jauh pengertian dan pembahasan dari bagian Struktur data yg terfokus pada Stack, Queue dan Tree.

BAB IIPEMBAHASAN

2.1 Stack

Pengertian Stack pada Struktur Data adalah sebagai tumpukan dari benda, sekumpulan data yang seolah-olah diletakkan di atas data yang lain, koleksi dari objek-objek homogen, atau Suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja. Stack pada Struktur Data dapat diilustrasikan dengan dua buah kotak yang ditumpuk, kotak yang satu akan ditumpuk diatas kotak yang lainnya. Jika kemudian stack 2 kotak tadi, ditambah kotak ketiga, keempat, kelima, dan seterusnya, maka akan diperoleh sebuah stack kotak yang terdiri dari N kotak.

Stack bersifat LIFO (Last In First Out) artinya Benda yang terakhir masuk ke dalam stack akan menjadi yang pertama keluar dari stackStack karena aturan penyisipan dan penghapusan semacam itu, TOP adalah satu-satunya alamat tempat terjadi operasi. Elemen yang ditambahkan paling akhir akan menjadi elemen yang akan dihapus.Dikatakan bahwa elemen Stack akan tersusun secara LIFO (Last In First Out). Karena kita menumpuk Compo di posisi terakhir, maka Compo akan menjadi elemen teratas dalam tumpukan. Sebaliknya, karena kita menumpuk Televisi pada saat pertama kali, maka elemen Televisi menjadi elemen terbawah dari tumpukan. Dan jika kita mengambil elemen dari tumpukan, maka secara otomatis akan terambil elemen teratas, yaitu Compo juga.

2.1.1 Operasi dalam StackOperasi-operasi yang biasanya terdapat pada Stack yaitu:1. Push : digunakan untuk menambah item pada stack pada tumpukan paling atas 2. Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas 3. Clear : digunakan untuk mengosongkan stack 4. IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong 5. IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh

Cara mendefenisikan Stack dengan Array of Struct yaitu: 1. Definisikan Stack dengan menggunakan struct2. Definisikan konstanta MAX_STACK untuk menyimpan maksimum isi stack3. Buatlah variabel array data sebagai implementasi stack4. Deklarasikan operasi-operasi/function di atas dan buat implemetasinya.

contoh ://Deklarasi MAX_STACK #define MAX_STACK 10 //Deklarasi STACK dengan struct dan array data typedef struct STACK{ int top; char data[10][10]; };

//Deklarasi/buat variabel dari struct STACK tumpuk;

A. Top adalah suatu variabel penanda dalam STACK yang menunjukkan elemen teratas Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK sehingga menyebabkan stack penuh.

Ilustrasi Stack pada saat inisialisasi

B. Push berfungsi untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack (yang ditunjuk oleh TOS). Tambah satu (increment) nilai top of stack lebih dahulu setiap kali ada penambahan elemen stack. Asalkan stack masih belum penuh, isikan data baru ke stack berdasarkan indeks top of stack setelah diincrement sebelumnya.Operasi Push

void Push (NOD **T, char item) { NOD *n; n=NodBaru (item); n->next=*T; *T=n; }

C. Pop berfungsi untuk mengambil elemen teratas (data yang ditunjuk oleh TOS) dari stack. Ambil dahulu nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai yang akan dipop, baru dilakukan decrement nilai top of stack sehingga jumlah elemen stack berkurang.

Operasi Pop char Pop (NOD **T) { NOD *n; char item; if (!StackKosong(*T)) { P=*T; *T=(*T)->next; item=P->data; free(P); } return item; } create berfungsi untuk membuat sebuah stack baru yang masih kosong.

spesifikasi: tujuan : mendefinisikan stack yang kosonginput : stacksyarat awal : tidak ada output stack : - (kosong) dan syarat akhir: stack dalam keadaan kosong

2.1.2 Macam macam Stack1. Stack dengan ArraySesuai dengan sifat stack, pengambilan atau penghapusan elemen dalam stack harus dimulai dari elemen teratas.

2. Double Stack dengan ArrayMetode ini adalah teknik khusus yang dikembangkan untuk menghemat pemakaian memori dalam pembuatan dua stack dengan array. Intinya adalah penggunaan hanya sebuah array untuk menampung dua stack.

2.2 Queue Struktur data antrean atau queue adalah suatu bentuk khusus dari linear list, dengan operasi penyisipan (insertion) hanya diperbolehkan pada salah satu sisi, yang disebut sisi belakang (REAR), dan operasi penghapusan (deletion) hanya diperbolehkan pada sisi lainnya, yang disebut sisi depan (FRONT), dari list. Sebagai contoh dapat kita lihat antrean (Q1, Q2,...,QN). Kita notasikan bagian depan dari antrean Q sebagai FRONT(Q) dan bagian belakang sebagai REAR(Q). Jadi untuk antrean Q = [Q1, Q2, , QN] : FRONT(Q) = Q1 dan REAR(Q) = QN Kita menggunakan notasi NOEL(Q) untuk menyatakan jumlah elemen di dalam antrean Q. NOEL(Q) mempunyai harga integer. Untuk antrean Q = [Q1,Q2,, QN], maka NOEL(Q) = N. Operator penyisipan (insertion) disebut INSERT dan operator penghapusan (deletion) disebut REMOVE.Sebagai contoh untuk memperjelas bekerjanya antrean, kita perhatikan sederetan operasi berikut ini. Kita mulai dengan antrean hampa Q. Antrean hampa Q, atau Q[ ] dapat disajikan seperti terlihat pada Gambar 4-1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Gambar 4.1. Antrean hampa Di sini : NOEL(Q) = 0 FRONT(Q) = tidak terdefinisi REAR(Q) = tidak terdefinisi Lalu kita INSERT elemen A, diperoleh Q = [A], seperti terlihat di Gambar 4.2. - - - - - - - - - - - - - - - - - - A - - - - - - - - - - - - - - - - - - Gambar 4.2. Elemen A dimasukkan Di sini : N(Q) = 1 FRONT(Q) = A REAR(Q) = A Dilanjutkan dengan INSERT elemen B, sehingga diperoleh Q = [A, B], seperti terlihat di Gambar 4-3. - - - - - - - - - - - - - - - - - - A B - - - - - - - - - - - - - - - - - - Gambar 4.3. Elemen B dimasukkan setelah elemen A Di sini : N(Q) = 2 FRONT(Q) = A REAR(Q) = B Dilanjutkan dengan INSERT elemen C, sehingga diperoleh Q = [A, B, C], seperti terlihat di Gambar 4.4. - - - - - - - - - - - - - A B C - - - - - - - - - - - - - Gambar 4.4. Elemen C dimasukkan setelah elemen B Di sini : N(Q) = 3 FRONT(Q) = A REAR(Q) = C Dilanjutkan dengan DELETE satu elemen dari Q, sehingga diperoleh Q = [B, C], seperti terlihat di Gambar 4.5. - - - - - - - - - - - - - B C - - - - - - - - - - - - - Gambar 4.5. Satu elemen dihapus Di sini : N(Q) = 2 FRONT(Q) = B REAR(Q) = C Demikian seterusnya, kita dapat melakukan serangkaian INSERT dan DELETE yang lain. Suatu kesalahan underflow dapat terjadi, yakni apabila kita melakukan penghapusan pada antrean hampa. Antrean dikatakan beroperasi dalam cara FIRST-IN-FIRST-OUT (FIFO). Disebut demikian karena elemen yang pertama masuk merupakan elemen yang pertama ke luar. 2.2.1 Operasi Dasar pada QueueAda 4 operasi dasar yang dapat dilakukan pada struktur data antrean, yakni : 1. CREATE(antrean) 2. ISEMPTY(antrean) 3. INSERT(elemen,antrean) 4. REMOVE(antrean) Pandang misalnya antrean Q = [Q1, Q2, , QN], maka : CREATE(antrean) : CREATE(Q) adalah suatu operator untuk membentuk dan menunjukkan suatu antrean hampa Q. Berarti : NOEL(CREATE(Q)) = 0 FRONT(CREATE(Q)) = tidak terdefinisi REAR(CREATE(Q)) = tidak terdefinisi INSERT(elemen, antrean) :INSERT(E,Q) adalah operator yang memasukkan elemen E ke dalam antrean Q. Elemen E ditempatkan di bagian belakang dari antrean. Hasil dari operasi ini adalah antrean yang lebih panjang. REMOVE(antrean) REMOVE(Q) adalah operator yang menghapus elemen bagian depan dari Antrean Q. Hasilnya merupakan antrean yang lebih pendek. Pada setiap operasi ini, harga dari N(Q) berkurang satu, dan elemen kedua dari Q menjadi elemen terdepan. Jika N(Q) = 0, maka REMOVE(Q) memberikan suatu kondisi error, yakni suatu underflow. Jelas bahwa REMOVE(CREATE(Q)) juga memberikan kondisi underflow error.

2.3 Tree Pohonadalah suatustruktur datayang digunakan secara luas yang menyerupaistruktur pohondengan sejumlahsimpulyang terhubung. Binary Tree adalah struktur data yang hampir mirip juga dengan Linked List untuk menyimpan koleksi dari data. Linked List dapat dianalogikan sebagai rantai linier sedangkan Binary Tree bisa digambarkan sebagai rantai tidak linier. Binary Tree dikelompokkan menjadi unordered Binary Tree (tree yang tidak berurut) dan ordered Binary Tree (tree yang terurut).Binary Tree dapat digambarkan berdasarkan kondisinya, sebagai berikut:2.3.1 Binary Search Tree (BST) Binary Search Tree adalah tree yang terurut ( ordered Binary Tree ). Aturan yang harus dipenuhi untuk membangun sebuah BST adalah sebagai berikut:

Pembentukan BST Bila diketahui sederetan data 5, 3, 7, 1, 4, 6, 8, 9 maka proses inserting (memasukkan) data tersebut dalam algoritma BST langkah per langkah adalah sebagai berikut.

BAB IIIPENUTUP

3.1 KesimpulanStack merupakan list yang operasi penyisipan dan penghapusan elemennya dilakukan di satu ujung atau biasa juga disebut tumpukkan. Queue merupakan suatu bentuk khusus dari linear list, dengan operasi penyisipan (insertion) hanya diperbolehkan pada salah satu sisi, yang disebut sisi belakang (REAR), dan operasi penghapusan (deletion) hanya diperbolehkan pada sisi lainnya, yang disebut sisi depan (FRONT), dari list. Sedangkan Tree (pohon) adalah struktur data yang digunakan secara luas yang menyerupai struktur pohondengan sejumlah simpul yang terhubung.

3.2 SaranMenurut arti serta kegunaan dari Stack, queue dan tree itu sendiri, dapat dilihat bahwa komponen=komponen itu merupakan unsur yang penting dalam struktur data bidang ilmu komputer pemograman. Maka pelajarilah Stack, Queue dan Tree sebagai materi dalam sistem pembelajaran.

KATA PENUTUPDemikian yang dapat saya paparkan mengenai materi yang menjadi pokok bahasan dalam makalah ini, tentunya masih banyak kekurangan dan kelemahannya, kerena terbatasnya pengetahuan dan kurangnya rujukan atau referensi yang ada hubungannya dengan judul makalah ini. Penulis banyak berharap, para pembaca bisa memberikan kritik dan saran yang membangun kepada penulis, demi sempurna nya makalah ini dan penulisan makalah di kesempatan lainnya. Semoga makalah ini berguna bagi penulis pada khususnya juga para pembaca.

DAFTAR PUSTAKA

https://furqonubd.wordpress.com/2013/05/20/stack-and-queue/http://www.slideshare.net/istiqlal_miB/makalah-stack-tumpukanhttp://id.ask.com/web?q=apa+itu+queue&siteid=30523&qsrc=999&l=sem&ad=semA&an=mischttps://furqonubd.wordpress.com/2013/05/20/stack-and-queue/

Stack, Queue dan TreePage 14