bentuknya, yang dapat berubah pada saat runtime. LIST, STACK DAN QUEUE Definisi list : - List adalah barisan nol atau lebih elemen yang bertipe sama. List merupakan struktur yang fleksibel karena dapat tumbuh dan menyusut sesuai kebutuhan dan elemennya dapat diakses, disisipkan atau dihapus pada posisi manapun dalam list. List dapat juga disambung atau dipecah ke dalam sublist. List merupakan struktur linear umum tanpa batasan penyisipan dan penghapusan hanya pada salah satu ujung. Ditinjau dari spektrum struktur data, list merupakan struktur dinamis. List dirancang tidak hanya menyimpan nilai data, tetapi juga ukuran dan bentuknya, yang dapat berubah pada saat runtime. Operasi pada sebuah list harus dapat memungkinkan : - menyisipkan elemen pada posisi manapun di dalam list (insert) menghapus elemen pada posisi manapun (delete) mengambil elemen pada posisi manapun (retrieve) mencari elemen tertentu pada list (locate) bergerak maju dan mundur sepanjang list Tipe Pointer pada Notasi Algoritma Tipe pointer untuk notasi algoritma menggunakan symbol ↑. Nama Tipe Ranah nilai Tetapan Operator : ↑ atau pointer : alamat sel memori : NIL, yang menunjuk alamat tidak terdefinisi : operator perbandingan yang menghasilkan nilai Boolean, yaitu = (sama) dan ≠ (tidak sama). Notasi http://www.mercubuana.ac.id
P↑.Info menjadi L.TabCell[P].Info type CellType = integer type Address = integer 1..Max {menyatakan alamat} type Cell = CellType {pendefinisian tipe list berikut tergantung kepada bentuk list} type List = record < Info : array[1..Max] of Cell, Available : Address> {posisi yang siap diisi} Implementasi List dengan Cursor DEKLARASI const Max=100 {maksimum elemen list} type CellType = integer type Address = integer 0..Max {menyatakan alamat} type Cell = record < Info : CellType, Next : Address > {pendefinisian tipe list berikut tergantung kepada bentuk list} type List = record < TabCell : array[0..Max] of Cell, Head : Address, Available : Address> {posisi yang siap diisi} {cara akses jika L adalah List dan P adalah address: L.Head menjadi L.Head, P↑.Info menjadi L.TabCell[P].Info P↑.Next menjadi L.TabCell[P].Next NIL menjadi 0 } STACK I. IMPLEMENTASI STACK Stack menerapkan aturan last-in, first-out (LIFO), implementasi alternative stack adalah : 1. List dengan pointer untuk variable-length stack (ukuran stack bervariasi) http://www.mercubuana.ac.id
http://www.mercubuana.ac.id X X procedure pop(input/output S:Stack) { menghapus elemen terakhir dari top stack, K.Awal : stack S sudah terdefinisi, S tidak kosong K.Akhir : S.TOP ← S.TOP.Next } function getTop(input S:Stack) → Cell { mengembalikan elemen pada top stack } I.1.1. Push stack dengan list: procedure push(input/output S:Stack, input x:CellType) { menyisipkan elemen baru pada top stack, K.Awal : stack S dan x sudah terdefinisi, stack tidak penuh K.Akhir : S.TOP ← P dan x menjadi elemen top stack DEKLARASI P:Address DESKRIPSI : Alokasi (P) {alokasi memori untuk P} If P<> NIL then p↑.Info ← x p↑.Next ← S.TOP {push} S.TOP ← P endif Stack sebelum dan setelah operasi penyisipan : TOP push Y TOP http://www.mercubuana.ac.id X X