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.
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.
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.
pada stack adalah operasi mengambil sebuah elemen dari sebuah stack.
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}
[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}
[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}
[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}
[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}
[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}
[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}
di tunggu Jarkomnya masta
BalasHapusnice post.... Learn Computer Tricks, Facebook, Software, Hardware, Technology,Hacking Tricks, Mobile Tricks, Internet Tricks, virus and Videos.
BalasHapusNice Post bang, sangat membantu
BalasHapusSangat membantu bang :D
BalasHapusBlog Teknologi