Struktur Data : List & Stack

List 

List atau senarai adalah sebuah pemikiran/konsep struktur data yang sangat dasar pada pemrograman agar lebih fleksibel, di mana setiap elemen akan ditambahkan saat dibutuhkan, tidak dialokasikan dengan tempat tertentu di dari awal. 

Tipe – Tipe List

List kosong 
hanya terdiri dari sebuah penunjuk elemen yang berisi NULL (kosong). List kosong tidak memiliki satu buah elemen pun sehingga hanya berupa penunjuk awal elemen yang berisi NULL (kosong)

List tunggal 
adalah sebuah list yang elemennya hanya menyimpan informasi elemen setelahnya (next) sehingga jalannya pengaksesan list hanya dapat dilakukan secara maju.

List ganda 
adalah sebuah list yang elemennya menyimpan informasi elemen sebelumnya dan informasi elemen setelahnya (dua buah pengait) sehingga proses penelusuran list dapat dilakukan secara maju dan mundur.

Operasi Pada List
•Penambahan Elemen di Awal List
•Penambahan Elemen di Tengah List
•Penambahan Elemen di Akhir List
•Penghapusan Elemen di Awal List
•Penghapusan Elemen di Tengah List
•Penghapusan Elemen di Akhir List


List statis merupakan list dengan jumlah elemen yang sudah dibatasi. contoh : array

List Dinamis adalah List dengan jumlah maksimal elemen tidak ditentukan pada kode program. contoh : pointer.

Stack

Stack adalah sebuah kumpulan data dimana suatu data diletakkan di atas data yang lain. Dengan demikian stack adalah struktur data yang menggunakan konsep LIFO. Sehingga elemen terakhir yang disimpan dalam stack menjadi elemen pertama yang diambil.

Stack dengan representasi statis 
biasanya diimplementasikan dengan menggunakan array. Sebuah array memiliki tempat yang dialokasikan di awal sehingga sebuah elemen yang dimasukan dalam sebauh array terbatas pada tempat yang ada pada array.

Stack dengan representasi dinamis
biasa diimplementasikan dengan menggunakan pointer yang menunjuk pada elemen-elemen yang dialokasikan pada memori.

Operasi Pada Stack

Operasi push()
pada stack adalah operasi menambahkan elemen baru pada sebuah stack.

Operasi pop()
pada stack adalah operasi mengambil sebuah elemen dari sebuah stack. 

Operasi isempty()
Fungsi ini akan mengembalikan nilai true jika elemen kosong.

Operasi isfull()
Fungsi yang akan mengembalikan nilai true jika stack penuh

Contoh Push() – stack statis

[1]Procedure push (nim:string, nama:string,
[2]nilai:real,s:stack)
[3]
[4] if isFull(S)=true then
[5] {jika stack penuh}
[6] output (“stack penuh”)
[7] {end if}
[8] else
[9] if isEmpty(S) = true then
[10] {jika stack kosong}
[11] S.top<- 1
[12] S.data[0].nim<-nim
[13] S.data[0].nama<-nama
[14] S.data[0].nilai<-nilai
[15] {end if}
[16] else
[17] {jika stack tidak kosong}
[18] S.top <- S.top + 1
[19] S.data[s.top].nim<-nim
[20] S.data[s.top].nama<-nama
[21] S.data[s.top].nilai<-nilai
[22] {end else}
[23] {end else}
[24] {end procedure}

Contoh PUSH() – STACK DINAMIS
[1] procedure push (nim:string, nama:string,
[2] nilai:real, s:stack)
[3]
[4] elmt↑ : elemen
[5]
[6] allocMem(elmt↑)
[9] elmt↑.elmt.nim <- nim
[10] elmt↑.elmt.nama <- nama
[11] elmt↑.elmt.nilai <- nilai
[12] elmt↑.next↑ <- S.top↑
[13] S.top↑ <- S.top↑
[14] elmt↑ <- NULL
[15]
[16] {end procedure}

  
Contoh Pop() – stack statis
[1] procedure pop(s:stack)
[2] if S.top=1 then
[3] {jika stack satu elemen}
[4] s.top <- -1
[5] {end if}
[6] else
[7] if S.top <> -1 then
[8] {jika stack lebih dari satu elemen}
[9] S.top <- S.top - 1
[10] {end if}
[11] {end else}
[12] {end procedure}

Contoh Pop() – stack dinamis
[1] procedure pop(S:stack)
[2]
[3] if s.top<>null then
[4] {jika stack bukan stack kosong}
[5] elmt↑:elemen
[6] elmt↑<- s.top↑
[7] s.top↑ <- s.top↑.next↑
[8] elmt↑.next↑ <-
[9] delAllocMem (elmt↑)
[10] {end if}
[11] {end procedure}

Contoh Isempty() – stack statis
[1] function isEmpty(s:stack)->boolean
[2] hasil:boolean
[3] hasil<- false
[4] if S.top= -1 then
[5] hasil<- true
[6] {end if}
[7] return hasil
[8] {end function}

Contoh Isempty() – stack DINAMIS
[1] function isEmpty(s:stack)->boolean
[2] hasil:boolean
[3] hasil<- false
[4] if S.top↑= NULL then
[5] hasil<- true
[6] {end if}
[7] return hasil
[8] {end function}

Contoh Function isfull()
[1] function isFull()
[2] hasil : boolean
[3] hasil <- false
[4] if s.top = 10 then
[5] hasil<-true
[6] {end if}
[7] return hasil
[8] {end function}






Komentar

Posting Komentar

Postingan Populer