Escolar Documentos
Profissional Documentos
Cultura Documentos
Halaman
DAFTAR ISI.............................................................................................. 1
V.6 INSERT-After.................................................................. 8
V.7 INSERT-Last.................................................................... 9
[1]
VI.5 Penghapusan Sebuah Elemen Pada STACK (Pop)..... 17
DAFTAR PUSTAKA................................................................................ 23
[2]
STRUKTUR DATA
Struktur data yang standar yang biasanya digunakan dibidang informatika adalah :
Review Record (Rekaman) disusun oleh satu atau lebih field. Tiap field
menyimpan data dari tipe dasar tertentu atau dari tipe bentukan lain yang sudah
didefenisikan sebelumnya. Nama rekaman ditentukan oleh pemrogram.
[3]
Contoh :
Pendahuluan
1. Sebagai Peubah
Contoh :
L : array [1…50] of integer
NamaMhs : array [‘a’…’j’] of string
2. Sebagai tipe baru
Contoh :
Type LarikInt : array [1…100] of integer
P : LarikInt
[4]
3. Mendefinisikan ukuran maksimum elemen larik sebagai konstanta
Contoh :
Const Nmaks = 100
Type LarikInt : array [1..Nmaks] of integer
P : LarikInt
List linier adalah sekumpulan elemen bertype sama, yang mempunyai keturutan
tertentu, yang setiap elemennya terdiri dari 2 bagian :
[5]
< Info : Info Type
Next : address>
Jika diberikan L, L1 dan L2 adalah list linier dengan elemen ElmtList, maka
operasi yang dapat dilakukan :
{Text apakah sebuah list L kosong, mengirimkan true jika list kosong, false jika
tidak kosong}
[6]
V.2 Pembuatan Sebuah Elemen Pada List Linier
{K. Akhir : terbentuk list L yang kosong : First (L) diinisialisasikan dengan Nil)
Penyisipan sebuah elemen dapat dilakukan terhadap sebuah elemen yang sudah
dialokasi (diketahui address-nya), atau sebuah elemen yang hanya diketahui nilai
Info-nya (berarti belum dialokasi).
{Proses : Insert sebuah elemen beralamat P sebagai elemen pertama list linier L
yang mungkin kosong}
[7]
First (L) ← P
{K. Akhir : Sebuah elemen dialokasikan dan menjadi elemen pertama list L, jika
alokasi berhasil. Jika alokasi gagal list tetap seperti semula}
P : address
If P ≠ Nil then
Info (P) ← E
First (L) ← P
V.6 INSERT-AFTER
{K. Awal : Prec adalah elemen list, prec ≠ Nil, P sudah dialokasikan, P ≠ Nil,
Next (P) = Nil
[8]
Next (Prec) ← P
V.7 INSERT-Last
{K. Awal : List L mungkin kosong, P sudah dialokasi, P ≠ Nil, Next (P) = Nil}
{Proses : Insert sebuah elemen beralamat P sebagai elemen terakhir dari list linier
L yang mungkin kosong}
InsertFirst (L,P)
Else
Proses : Insert sebuah elemen beralamat P sebagai elemen terakhir dari list linier L
yang mungkin kosong}
[9]
Last : Address {address untuk traversal}
If (P ≠ Nil) then
Info (P) ← E
InsertLast@(L,P)
{K. Awal : List L tidak kosong, minimal 1 elemen pertama pasti ada}
{K. Awal : List L tidak kosong, minimal 1 elemen pertama pasti ada}
E ← Info (P)
[10]
First (L) ← Next (First (L))
Dealokasi (P)
Delete After :
{K. Awal : List tidak kosong, Prec adalah elemen list Next (Prec) yang baru
adalah suksesor dari suksesor Prec sebelum penghapusan}
{K. Akhir : Menghapus P dari list, P mungkin elemen pertama, “tengah” atau
terakhir}
DeleteFirst (L,P)
Else
While (Next(Prec) ≠ P) do
DeleteAfter (Prec, P)
Endif
[11]
DELETELast
Menghapus sebuah elemen terakhir list dapat dilakukan jika alamat dari elemen
sebelum elemen terakhir diketahui. Persoalan selanjutnya menjadi persoalan
DeleteAfter, kalau last bukan satu-satunya elemen list linier. Ada dua kasus, yaitu
list menjadi kosong atau tidak.
{K. Akhir : Menghapus elemen terakhir dari list, list mungkin menjadi kosong}
P ← Last
Else
Concat adalah menggabungkan dua list. Dalam contoh berikut list kedua
disambung ke list pertama. Jadi Last (L1) menjadi predesesor First (L2). Realisasi
algoritma adalah sebuah prosedur sebagai berikut :
[12]
{K. Awal : L1 ≠ L2, L1 ≠ L3, dan L3 ≠ L2; L1, L2 mungkin kosong}
{K. Akhir : L3 adalah hasil konkatenasi (menyambung) dua buah list linear, L2
ditaruh di belakang L1}
Endif
L : List
P : Address
[13]
VI. STACK (Tumpukan)
Maka secara lojik, sebuah STACK dapat digambarkan sebagai list linear
yang setiap elemennya adalah
Top adalah elemen pertama list, supaya penambahan dan penghapusan dengan
mudah dan efisien dapat dilakaukan. Sehingga jika S adalah sebuah Stack, dan P
adalah address maka :
Stack kosong adalah Stack dengan Top (S) = Nil (tidak terdefinisi)
[14]
Deklarasi : type InfoType = … {Sebuah type terdefenisi}
S : Stack
P : Address
Pada stack, jarang sekali dilakukan traversal, karena keunikan Stack justru
pada operasi yang hanya menyangkut elemen TOP. Namaun dibutuhkan traversal
misalnya untuk mencetak isi Stack.
Pada stack, elemen yang diproses hanyalah elemen pada TOP. Maka
hampir tidak pernah dilakukan search.
Mengetahui bahwa stack kosong atau tidak sangat penting, sebab semua
operasi akan dilakukan berdasarkan kosong atau tidaknya suatu Stack.
Realisasi algoritma dari defenisi fungsional ini adalah sebuah fungsi yang
melakukan test terhadap Stack sebagai berikut :
{TEST stack kosong : Mengirim true, jika tumpukan kosong, false jika
tumpukan tidak kosong}
[15]
VI.3 Pembuatan STACK kosong
{Menambahkan sebuah elemen baru pada TOP sebuah stack, dengan elemen yang
dikeyahui alamatnya}
TOP (S) ← P
[16]
VI.5 Penghapusan Sebuah Elemen Pada STACK (Pop)
Penghapusan elemen Stack selalu dilakukan pada TOP, hanya saja harus
diperhitungkan bahwa mungkin Stack akan menjadi kosong akibat terjadinya
penghapusan. Jika Stack menjadi kosong, maka harga TOP harus diganti.
Realisasi algoritma dari defenisi funsional ini adalah salah satu dari dua buah
procedure yang melakukan pengambilan elemen stack sebagai berikut. Procedure
pertama mengambil suatu ElmtS dengan menyimpan alamatnya dan yang kedua
mengambil nilai, dan membebaskan alamat (dealokasi) yang tadinya dipakai.
{K. Akhir : Alamat elemen Top (S) disimpan pada P, sehingga informasinya
dapat diakses melalui P}
{Proses : Menghapus elemen stack, stack tidak boleh kosong dan mungkin
menjadi kosong}
3. Suatu elemen dengan elemen lain dapat diakses melalui informasi next
[17]
2. Antrian dalam dunia nyata
Maka secara lojik, sebuah Queue dapat digambarkan sebagai list linear yang
setiap elemennya adalah :
Selain itu alamat elemen Pertama (Head) dan elemen terakhir (Tail) dicatat. Maka
jika Q adalah Queue dan P adalah address, penulisan untuk queue adalah :
Pada queue, elemen yang diproses hanyalah elemen pada pertama dan
terakhir. Maka hamper tidak pernah dilakukan search.
Mengetahui bahwa Queue kosong atau tidak sangat penting, sebab semua
operasi akan dilakukan berdasarkan kosong atau tidaknya suatu Queue.
Realisasi algoritma dari defenisi fungsional ini adalah sebuah fungsi yang
melakukan test terhadap Queue sebagai berikut :
{TEST Queue kosong : Mengirim true, jika antrian kosong, false jika
antrian tidak kosong}
[18]
Deskripsi : return ((Head(Q) = Nil) and (Tail (Q) = Nil))
Realisasi algoritma dari defenisi fungsional ini adalah salah satu dari dua
buah prosedur yang melakukan penambahan elemen queue queue sebagai
berikut :
Sebuah pohon adalah himpunan terbatas tidak kosong, dengan elemen yang
dibedakan sebagai berikut :
[19]
1. Sebuah elemen yang dibedakan dari yang lain yang disebut sebagai AKAR
(root) dari pohon
2. Elemen yang lain (jika masih ada) dibagi-bagi menjadi beberapa sub
himpunan yang disjoint dan masing-masing sub himpunan tersebut adalah
pohon yang disebut sebagai sub pohon dari pohon tersebut.
Beberapa Istilah :
1. Hutan
2. Simpul (Node)
Simpul adalah elemen dari pohon yang memungkinkan akses pada sub
pohon dimana simpul tersebut berfungsi sebagai Akar
3. Cabang
4. Ayah
5. Anak
6. Saudara
7. Daun
Daun adalah simpul terminal dari pohon. Semua simpul selain Daun
adalah simpul bukan terminal
8. Jalan
9. Derajat
[20]
Jika sebuah simpul berderajat N disebut pohon N-aire
Level pohon adalah panjangnya jalan dari akar sampai dengan simpul
yang bersan
gkutan. Panjang dari jalan adalah banyaknya simpul yang dikandung pada
jalan tersebut. Akar mempunyai tingkat sama dengan 1.
Dua buah simpul disebut sebagai Sepupu jika mempunyai tingkat yang
sama dalam sebuah pohon.
12. Lebar
Lebar sebuah pohon adalah maksimum banyaknya simpul yang ada pada
suatu Tingkat (Level)
Terdiri dari sebuah simpul yang disebut sebagai Akar dan dua buah
himpunan lain yang disjoint yang merupakan pohon biner yang disebut
sebagai Sub Pohon Kiri (Left) dan Sub Pohon Kanan (Right) dari pohon
biner tersebut.
Pohon Biner merupakan tipe yang sangat penting dari struktur data dan
banyak dijumpai dalam berbagai terapan. Karakteristik yang dimiliki oleh pohon
biner adalah bahwa setiap simpul paling banyak hanya memiliki dua buah anak,
dan mungkin tidak punya anak.
Istilah-istilah yang digunakan sama dengan istilah pada pohon secara umum.
[21]
Notasi Prefiks, Infiks dan Postfiks
1. Notasi Prefiks
2. Notasi Infiks
3. Notasi Posfiks
DAFTAR PUSTAKA
[22]
2. Bambang Wahyudi. 2004. Struktur Data dan Algoritma. Yogyakarta :
Andi Offset
[23]