Struktur Data Siap

Embed Size (px)

Citation preview

  • 8/9/2019 Struktur Data Siap

    1/24

    DAFTAR ISI

    Halaman

    DAFTAR ISI.............................................................................................. 1

    I. PENGERTIAN STRUKTUR DATA................................................... 3

    II. REVIEW RECORD (REKAMAN).................................................... 4

    III. REVIEW ARRAY (LARIK)............................................................. 4

    IV. ADT (Abstrak Data Type)................................................................. 5

    V. LINKED LIST (List Linear)............................................................... 6

    V.1 Pengetesan List Kosong................................................. 6

    V.2 Pembuatan Sebuah Elemen Pada List Linier.............. 7

    V.3 Latar Belakang Masalah................................................ 7

    V.4 INSERT-First (Address)................................................ 7

    V.5 INSERT-First (Nilai)....................................................... 8

    V.6 INSERT-After.................................................................. 8

    V.7 INSERT-Last.................................................................... 9

    V.8 Penghapusan Sebuah Elemen Pada List Linear........... 10

    VI. STACK (Tumpukan)......................................................................... 14

    VI.1 Traversal Pada Stack..................................................... 15

    VI.2 Search Pada Stack.......................................................... 15

    VI.3 Pembuatan Stack Kosong.............................................. 16

    VI.4 Pembuatan Sebuah Elemen Pada STACK (Push)...... 16

    [1]

  • 8/9/2019 Struktur Data Siap

    2/24

    VI.5 Penghapusan Sebuah Elemen Pada STACK (Pop)..... 17

    VII. QUEUE (Antrian)............................................................................. 17

    VII.1 Traversal Pada Queue.................................................. 18

    VII.2 Search Pada Queue....................................................... 18

    VII.3 Penghapusan Elemen Pada Queue.............................. 19

    VIII. POHON (Tree)................................................................................. 20

    DAFTAR PUSTAKA................................................................................ 23

    [2]

  • 8/9/2019 Struktur Data Siap

    3/24

    STRUKTUR DATA

    I. PENGERTIAN STRUKTUR DATA

    Struktur data adalah cara menyimpan atau mempersentasekan data di dalam

    computer agar bias dipakai secara efisien.

    Secara garis besar type data dapat dikategorikan menjadi :

    1. Type data sederhana

    a. Type data sederhana tunggal, misalnya integer, real, Boolean dan

    karakter.

    b. Type data sederhana majemuk, misalnya string.

    2. Struktur data meliputi

    a. Struktur data sederhana, misalnya array dan record.

    b. Struktur data majemuk, yang terdiri dari :

    Linear : Stack, Queue, serta List dan Multilist.

    Non Linier : Pohon Biner dan Graph.

    Pemakaianstruktur data yang tepat di dalam proses pemrograman akan

    menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadi program

    secara keseluruhan lebih efisien dan sederhana.

    Struktur data yang standar yang biasanya digunakan dibidang informatika adalah :

    List linear (Linked List) dan variasinya

    Multilist

    Stack (Tumpukan)

    Queue (Antrian)

    [3]

  • 8/9/2019 Struktur Data Siap

    4/24

    Tree (Pohon)

    Graph (Graf)

    II. REVIEW RECORD (REKAMAN)

    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.

    Rekaman disebut juga tipe terstruktur.

    Contoh :

    1. Type Titik : record

    Jika P dideklarasikan sebagai Titik, maka mengacu field pada P adalah P.x

    dan P.y.

    2. Didefenisikan tipe terstruktur yang mewakili Jam yang dinyatakan sebagai

    jam (hh), menit (mm) dan detik (ss), maka cara menulis type Jam adalah :

    Type JAM : record

    Jika J adalah peubah (variable) bertipe Jam, maka cara mengacu tiap field

    adalah J.hh, J.mm dan J.ss

    III.REVIEW ARRAY (LARIK)

    Pendahuluan

    Larik adalah struktur data statik yang menyimpan sekumpulan elemen

    yang bertipe sama.

    Setiap elemen diakses langsung melalui indeksnya.

    [4]

  • 8/9/2019 Struktur Data Siap

    5/24

    Indeks larik harus tipe data yang menyatakan keturutan, misalnya integer

    atau karakter.

    Banyaknya elemen larik harus sudah diketahuai sebelum program

    dieksekusi.

    Tipe elemen larik dapat berupa tipe sederhana, tipe terstruktur atau tipe

    larik lain.

    Nama lain Array adalah Larik, table atau vector.

    Cara Mendefenisikan Array

    1. Sebagai Peubah

    Contoh :

    L : array [150] of integer

    NamaMhs : array [aj] of string

    2. Sebagai tipe baru

    Contoh :

    Type LarikInt : array [1100] of integer

    P : LarikInt

    3. Mendefinisikan ukuran maksimum elemen larik sebagai konstanta

    Contoh :

    Const Nmaks = 100

    Type LarikInt : array [1..Nmaks] of integer

    P : LarikInt

    Cara menterjemahkan ke bahasa C :

    #define Nmaks 100

    [5]

  • 8/9/2019 Struktur Data Siap

    6/24

    Typedef int Larikint [Nmaks + 1];

    LarikInt P;

    IV. ADT (Abstarct Data Type)

    ADT adalah defenisi type dan sekumpulan primitive (operasi dasar)

    terhadap type tersebut.

    Type diterjemahkan menjadi type terdefinisi dalam bahasa pemrograman

    yang bersangkutan, msalnya menjadi record dalam pascal/ada dan Struct

    dalam bahasa C

    ADT biasanya diimplementasi menjadi dua buah modul, yaitu :

    1. Defenisi/spesifikasi type dan primitif

    Spesifikasi type sesuai dengan bahasa yang di pakai.

    Spesifikasi dari primitive sesuai dengan kaidah dalam konteks

    procedural, yaitu :

    a. Fungsi : nama, domain, range, dan pre kondisi.

    b. Prosedur : keadaan awal, keadaan aktif dan prosedur yang

    dilakaukan.

    2. Body/realisasi dari primitif, berupa kode program dalam bahasa yang

    bersangkutan. Realisasi fungsi dan prosedur harus sedapat mungkin

    memanfaatkan Selektor dan Konstruktor.

    V. LINKED LIST (List Linier)

    List linier adalah sekumpulan elemen bertype sama, yang mempunyai keturutan

    tertentu, yang setiap elemennya terdiri dari 2 bagian :

    [6]

  • 8/9/2019 Struktur Data Siap

    7/24

    Type Elmtlist = record

    < Info : Info Type

    Next : address>

    Dengan Info Type adalah sebuah type terdefenisi yang menyimpan

    informasi sebuah elemen list ; Next adalah addres dari elemen berikutnya

    (suksesor).

    Dengan demikian, jika didefenisikan First adalah alamat elemen pertama

    list, maka elemen berikutnya dapat di akses secara suksetif dari elemen pertama

    tersebut.

    List terdiri dari sekumpulan elemen. Seringkali diperlukan untukmemproses setiap elemen list dengan cara yang sama. Karena itu salah satu

    primitive operasi konsultasi dasar pada struktur list adalah traversal, yaitu

    mengunjungi setiap elemen list untuk diproses. Karena urutan akses adalah dari

    elemen pertama sampai dengan elemen terakhir, maka traversal list secara natural

    dilakukan dari elemen pertama, suksesornya, dan seterusnya sampai dengan

    elemen terakhir.

    Secara fungsional, pada sebuah list linier biasanya dilakukan pembuatan,

    penambahan atau penghapusan elemen yang dapat ditulis sebagai berikut :

    Jika diberikan L, L1 dan L2 adalah list linier dengan elemen ElmtList, maka

    operasi yang dapat dilakukan :

    ListEmpty, CreateList, Insert Delete, Concat dan UpdateList

    V.1 Pengetesan List Kosong

    Pemeriksaan apakah sebuah list kosong sangat penting, karena KeadaanAwal dan Keadaan Akhir beberapa prosedur harus didefenisikan berdasarkan

    keadaan list. Operasi pada list kosong sering kali membutuhkan penanganan

    khusus realisasi algoritmik dari defenisi fungsional ini adalah sebuah fungsi

    sebagai berikut.

    Function IsEmptyList (L : List) Boolean

    {Text apakah sebuah list L kosong, mengirimkan true jika list kosong, false jika

    tidak kosong}

    [7]

  • 8/9/2019 Struktur Data Siap

    8/24

    Deskripsi : return (First (L) = Nil)

    V.2 Pembuatan Sebuah Elemen Pada List Linier

    Pembuatan sebuah list berarti membuat sebuah list KOSONG, yang

    selanjutnya siap diproses (ditambah elemennya, dsb). Realisasi algoritmik dari

    defenisi fungsional ini adalah sebuah prosedur sebagai berikut.

    Procedure CreateList (Output L : List)

    {K. Awal : Sembarang}

    {K. Akhir : terbentuk list L yang kosong : First (L) diinisialisasikan dengan Nil)

    Deskripsi : First (L) Nil

    V.3 Penyisipan Sebuah Elemen Pada List Linier

    Fungsi insert (penyisipan) harus dijabarkan lebih rinci, karena dapat

    menjadi penyisipan sebagai elemen pertama, setelah sebuah address P atau

    penyisipan menjadi elemen terakhir atau menjadi elemen terakhir atau bahkan

    menjadi elemen tengah.

    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).

    V.4 INSERT-First (Address)

    Menambahkan sebuah elemen yang diketahui alamatnya sebagai elemenpertama list.

    Prosedure InsertFirst (Input/Output L : List, Input P : address)

    {K. Awal : List L mungkin kosong}

    {K. Akhir : P adalah elemen pertama list L}

    {Proses : Insert sebuah elemen beralamat P sebagai elemen pertama list linier L

    yang mungkin kosong}

    [8]

  • 8/9/2019 Struktur Data Siap

    9/24

    Deskripsi : Next (P) First (L)

    First (L) P

    V.5 INSERT-First (Nilai)

    Menambahkan sebuah elemen yang diketahui nilainya sebagai elemen

    pertama list.

    Prosedure InFirst (Input/output L : List, Input E : infotype)

    {K. Awal : List L mungkin kosong}

    {K. Akhir : Sebuah elemen dialokasikan dan menjadi elemen pertama list L, jika

    alokasi berhasil. Jika alokasi gagal list tetap seperti semula}

    {Proses : Insert sebuah elemen sebagai elemen pertama list}

    P : address

    Deskripsi : Alokasi (P)

    If P Nil then

    Info (P) E

    Next (P) First (L)

    First (L) P

    V.6 INSERT-AFTER

    Menyisipkan sebuah elemen beralamat P sebagai suksesor dari sebuah

    elemen list linier yang beralamat Prec

    Prosedure InsertAfter (Input P, Prec : address)

    {K. Awal : Prec adalah elemen list, prec Nil, P sudah dialokasikan, P Nil,

    Next (P) = Nil

    {K.Akhir : P menjadi suksesor Prec}

    {Proses : Insert sebuah elemen beralamat P pada List linier L}

    [9]

  • 8/9/2019 Struktur Data Siap

    10/24

    Deskripsi : Next (P) Next (Prec)

    Next (Prec) P

    V.7 INSERT-Last

    Menyisipkan sebuah elemen beralamat P sebagai elemen terakhir sebuah

    list linier. Ada dua kemungkinan list kosong atau tidak kosong

    Prosedur InsertLast@(Input/Output L : List, Input P : address)

    {K. Awal : List L mungkin kosong, P sudah dialokasi, P Nil, Next (P) = Nil}

    {K. Akhir : P adalah elemen terakhir list L}

    {Proses : Insert sebuah elemen beralamat P sebagai elemen terakhir dari list linier

    L yang mungkin kosong}

    Last : address {address untuk traversal}

    Deskripsi : If First (L) = Nil then {insert sebagai elemen pertama}

    InsertFirst (L,P)

    Else

    {Traversal list sampai address terakhir}

    Last First (L)

    While (Next (Last) Nil) do

    Last Next (Last)

    Endwhile {Next (Last) = Nil, Last adalah elemen terakhir ;

    insert P after last}

    Insert After (P, Last) Endif

    Prosedure InsertLast (Input/output L : List, Input E : Infotype)

    {K. Awal : List L mungkin kosong, P sudah dialokasi, P Nil, Next(P)=Nil}

    {K. Akhir : P adalah elemen terakhir list L

    [10]

  • 8/9/2019 Struktur Data Siap

    11/24

    Proses : Insert sebuah elemen beralamat P sebagai elemen terakhir dari list linier

    L yang mungkin kosong}

    Last : Address {address untuk traversal}

    Deskripsi : Alokasi (P)

    If (P Nil) then

    Info (P) E

    InsertLast@(L,P)

    V.8 Penghapusan Sebuah Elemen Pada List Linier

    Penghapusan harus dijabarkan lebih rinci, karena penghapusan elemen

    dapat merupakan pertama, setelah sebuah address P atau penghapusan elemen

    terakhir. Perbedaan ini melahirkan 3 operasi dasar penghapusan elemen list yang

    diturunkan dari defenisi fungsional ini menjadi realisasi algoritma.Operasi

    penghapusan dapat mengakibatkan list kosong, jika list semula hanya terdiri dari

    satu elemen.

    DELETFirst : menghapus elemen pertama list linier

    Elemen yang di hapus dicatat alamatnya

    Procedure DeleteFirst@(Input/Output P:address)

    {K. Awal : List L tidak kosong, minimal 1 elemen pertama pasti ada}

    {K. Akhir : Menghapus elemen pertama L P adalah @ elemen pertama L sebelum

    penghapusan, L ysng baru adalah Next (L)

    Deskripsi : P First (L)

    First (L) Next (First (L))

    Procedure DeleteFirst (Input/Output L : List, Output E : Info type)

    {K. Awal : List L tidak kosong, minimal 1 elemen pertama pasti ada}

    {K. Akhir : Menghapus elemen pertama L, E adalah Nilai elemen pertama L

    sebelum penghapusan, L yang baru adalah Next (L)

    Deskripsi : P First (L)

    [11]

  • 8/9/2019 Struktur Data Siap

    12/24

    E Info (P)

    First (L) Next (First (L))

    Dealokasi (P)

    Delete After :

    Penghapusan suksesor sebuah elemen :

    Prosedure DeleteAfter (Input Prec : address, Output P : address)

    {K. Awal : List tidak kosong, Prec adalah elemen list Next (Prec) yang baru

    adalah suksesor dari suksesor Prec sebelum penghapusan}

    Deskripsi : P Next (Prec)

    Next (Prec) Next (Next(Prec))

    Dengan primitive ini, maka penghapusan sebuah beralamat P dapat dilakukan

    dengan : mencari procedure dari P, yaitu alamat Prec memakai DeleteAfter (Prec)

    Prosedure Delete P (Input/Output L ; List, Output P:address)

    {K. Awal : List L tidak kosong, P adalah elemen list L}

    {K. Akhir : Menghapus P dari list, P mungkin elemen pertama, tengah atau

    terakhir}

    Prec : address {alamat predesesor}

    Deskripsi :{Cari predesore P}

    If (P = First (L) then {Delete list dengan satu elemen}

    DeleteFirst (L,P)

    Else

    Prec First (L)

    While (Next(Prec) P) do

    Prec Next (Prec) = P, hapus P}

    DeleteAfter (Prec, P)

    [12]

  • 8/9/2019 Struktur Data Siap

    13/24

    Endif

    DELETELast

    Menghapus sebuah elemen terakhir list dapat dilakukan jika alamat dari elemensebelum 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.

    Procedure DeleteLast (Input L : List, Output P : address)

    {K. Awal : List L tidak kosong, minimal mengandung 1 elemen}

    {K. Akhir : Menghapus elemen terakhir dari list, list mungkin menjadi kosong}

    {Proses : P adalah alamat elemen terakhir list sebelum penghapusan}

    Last, preclast : address {address untuk traversal}

    Deskripsi : {Find last dan address sebelum last}

    Last First (L)

    Preclast Nil {predesesor dari L takterdefenisi}

    While (Next (Last)) Nil do {Traversal list sampai @ terakhir}

    Preclast Last ; Last Next (Last)

    Endwhile {Next (Last) =Nil, Last adalh elemen terakhir ; preclast

    = sebelum last}

    P Last

    If Preclast = Nil then {list dg 1 elemen, jadi kosong}

    Else

    Next (preclast) Nil Endif

    Konkatenasi dua buah list linear

    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 :

    [13]

  • 8/9/2019 Struktur Data Siap

    14/24

    Procedure CONCAT (Input L1, L2 : List, Output : L3 : List)

    {K. Awal : L1 L2, L1 L3, dan L3 L2; L1, L2 mungkin kosong}

    {K. Akhir : L3 adalah hasil konkatenasi (menyambung) dua buah list linear, L2ditaruh di belakang L1}

    Last1 : address {alamat elemen terakhir list pertama}

    Deskripsi : Createlist (L3) {inisialisasi list hasil}

    If First (L1) = Nil then

    First (L3) First (L2)

    Else {Traersal list 1 sampai address terakhir, hubungkan last

    dengan First 2}

    First (L3) First (L1)

    While (Next (Last 1) Nil) do

    Last 1 First (L1)

    While (Next (Last 1) Nil) do

    Last 1 Next (Last 1)

    Endwhile {Next (Last 1) First (L2)

    Next (Last 1) First (L2)

    Endif

    Deklarasi : type InfoType = {Sebuah type terdefenisi}

    Type Address pointer to ElmtL

    Type ElmtL = record

    Type List = record

    {Deklarasi Nama Peubah}

    L : List

    [14]

  • 8/9/2019 Struktur Data Siap

    15/24

    P : Address

    VI. STACK (Tumpukan)

    Stack (Tumpukan) adalah list linear yang :

    1. Dikenali elemen puncaknya (TOP)

    2. Aturan penyisipan dan penghapusan elemen tertentu :

    Penyisipan selalu dilakaukan di atas TOP

    Penghapusan selalu dilakukan pada TOP

    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 di hapus. Dikatakan bahwa elemen Stack akan

    tersusun secara LIFO (Last In First Out).

    Maka secara lojik, sebuah STACK dapat digambarkan sebagai list linear

    yang setiap elemennya adalah

    Type Elmts = record

    Dengan InfoType terdefenisi yang menentukan informasi yang disimpan

    pada setiap elemen stack, dan address adalah alamat dari elemen. Selain itu alamat

    terbaru (TOP) dicatat sedangkan alamat elemen yang paling bawah, yaitu yang

    paling lama biasanya disebut BOTTOM.

    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 :

    Top (S) adalah alamat elemen TOP, dimana operasi

    penyisipan/penghapusan dilakukan.

    Info (P) adalah informasi yang disimpan pada alamat P

    Next (P) adalah alamat suksesor P

    ElmtS (P) adalah sebuah elemen stack yang beralamat P

    [15]

  • 8/9/2019 Struktur Data Siap

    16/24

    Stack kosong adalah Stack dengan Top (S) = Nil (tidak terdefinisi)

    Deklarasi : type InfoType = {Sebuah type terdefenisi}

    type Address pointer to ElmtS

    type Elmts = record

    Type Stack = record

    {Deklarasi Nama Peubah}

    S : Stack

    P : Address

    VI.1 Traversal Pada Stack

    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.

    VI.2 Search pada Stack

    Pada stack, elemen yang diproses hanyalah elemen pada TOP. Maka

    hampir tidak pernah dilakukan search.

    Operasi dan Fungsi dasar pada STACK

    a. Test STACK kosong

    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 :

    Function StackEmpty (S : STACK) Boolean

    {TEST stack kosong : Mengirim true, jika tumpukan kosong, false jika

    tumpukan tidak kosong}

    [16]

  • 8/9/2019 Struktur Data Siap

    17/24

    Deskripsi : return (Top (S) = Nil)

    VI.3 Pembuatan STACK kosong

    Membuat Stack kosong diperlukan untuk memeulai memakai satck.

    Realisai algoritma dari defenisi fungsional ini adalah sebuah prosedur yang

    melakukan inisialisasi stack sebagai berikut :

    Procedure CreateEmptyS (Output S : STACK)

    {K. Awal : sembarang}

    {K. Akhir : sebuah stack S yang kosong siap dipakai terdefenisi}

    {Proses : Membuat Stack kosong}

    Deskripsi : Top (S) Nil

    VI.4 Penambahan Sebuah Elemen Pada STACK (Push)

    Penambahan selalu dilakaukan pada TOP, dank arena alamat TOP

    diketahui maka prosesnya sederhana. Berikut ini akan diberikan skema procedurepenyisipan tersebut. Realisasi algoritma dari defenisi fungsional ini adalah salah

    satu dari dua buah prosedur yang melakukan penambahan elemen stack sebagai

    berikut. Prosedure pertama menamahkan suatu ElmtS yang diketahui alamatnya

    dan ang kedua menambahkan suatu nilai ElmtS yang diberikan.

    Procedure Push @ (Input/Output S : STACK Input P : address)

    {Menambahkan sebuah elemen baru pada TOP sebuah stack, dengan elemen yang

    dikeyahui alamatnya}

    {K. Awal : Stack mungkin kosong, P terdefenisi (berarti terdefenisi informasinya,

    Next (P) = Nil}

    {K. Akhir : Top (S) adalah P}

    Deskripsi : {insert sebagai elemen pertama}

    Next (P) TOP (S)

    TOP (S) P

    [17]

  • 8/9/2019 Struktur Data Siap

    18/24

    VI.5 Penghapusan Sebuah Elemen Pada STACK (Pop)

    Penghapusan elemen Stack selalu dilakukan pada TOP, hanya saja harusdiperhitungkan 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.

    Procedure PopStack @ (Input/Output S : STACK Output P : address)

    {K. Awal : Stack tidak kosong}

    {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}

    Deskripsi : P TOP (S)

    TOP (S) Next (TOP (S))

    VII. QUEUE (Antrian)

    Queue (Antrian) adalah list linier yang :

    1. Dikenali elemen pertama (Head) dan elemen terakhir (Tail)

    2. Aturan penyisipan dan penghapusan elemennya didefenisikan sebagai

    berikut :

    - Penyisipan selalu dilakukan setelah elemen terakhir

    - Penghapusan selalu dilakukan pada elemen pertama.

    3. Suatu elemen dengan elemen lain dapat diakses melalui informasi next

    Struktur data ini banyak dipakai dalam informatika misalnya untukmerepresentasi

    :

    [18]

  • 8/9/2019 Struktur Data Siap

    19/24

    1. Antrian job dalam system operasi

    2. Antrian dalam dunia nyata

    Maka secara lojik, sebuah Queue dapat digambarkan sebagai list linear yangsetiap elemennya adalah :

    Type ElmtQ = record

    Dengan InfoType terdefenisi yang menentukan informasi yang disimpan pada

    setiap elemen queue, dan address adalah alamat dari elemen.

    Selain itu alamat elemen Pertama (Head) dan elemen terakhir (Tail) dicatat. Makajika Q adalah Queue dan P adalah address, penulisan untuk queue adalah :

    Head (Q), Tail(Q), Next(P), Info(P)

    VII.1 Traversal Pada Queue

    Pada queue, jarang sekali dilakukan traversal, karena keunikan Queue

    justru pada operasi yang hanya menyangkut elemen pertama dan terakhir. Namun

    dibutuhkan traversal misalnya untuk mencetak isi antrian.

    VII.2 Search Pada Qeueu

    Pada queue, elemen yang diproses hanyalah elemen pada pertama dan

    terakhir. Maka hamper tidak pernah dilakukan search.

    Operasi dan Fungsi Dasar pada Queue

    a. Test Queue kosong

    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 :

    Function IsQEmpty (Q : Queue) Boolean

    [19]

  • 8/9/2019 Struktur Data Siap

    20/24

    {TEST Queue kosong : Mengirim true, jika antrian kosong, false jika

    antrian tidak kosong}

    Deskripsi : return ((Head(Q) = Nil) and (Tail (Q) = Nil))

    Penambahan Sebuah Elemen Pada Queue

    Penambahan selalau dilakukan pada ekor, dank arena alamat ekor

    diketahui maka prosesnya sederhana, yaitu hanya InsertLast.

    Berikut ini akan diberikan skema prosedur penyisipan tersebut :

    Realisasi algoritma dari defenisi fungsional ini adalah salah satu dari dua

    buah prosedur yang melakukan penambahan elemen queue queue sebagai

    berikut :

    Prosedur pertama menambahkan suatu Elemen Queue yang diketahui

    alamatnya dan yang kedua menambahkan suatu nilai elemen queue yang

    diberikan.

    VII.3 Penghapusan Elemen pada Queue

    Penghapusan elemen pada queue selalu dilakukan pada elemen pertama,

    hanya saja perlu diperhitungkan bahwa mungkin queue menjadi kosong, maka

    harga tail harus diganti. JIka akibat penghapusan queue tidak kosong, maka

    elemen terakhir tidak berubah.

    Berikut adalah skema penghapusan tersebut.

    Prosedur pertama melakukan pengapusan ElmtQ yang berada di Head dan

    yang dicatat adalah alamatnya, yaitu P. Prosedur yang kedua menghapus elemen

    Head dari Queue dan menyimpannya pada suatu elemtQ serta membebakan

    alamat yang tadinya dipakai oleh elemen Head tersebut.

    VIII. POHON (Tree)

    Defenisi Rekurens Dari Pohon

    [20]

  • 8/9/2019 Struktur Data Siap

    21/24

    Sebuah pohon adalah himpunan terbatas tidak kosong, dengan elemen yang

    dibedakan sebagai berikut :

    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

    Hutan adalah sequence (list) dari pohon

    2. Simpul (Node)

    Simpul adalah elemen dari pohon yang memungkinkan akses pada sub

    pohon dimana simpul tersebut berfungsi sebagai Akar

    3. Cabang

    Cabang adalah hubungan antara Akar dengan sub pohon

    4. Ayah

    Akar dari sebuah pohon adalah Ayah dari sub pohon

    5. Anak

    Anak dari sebuah pohon adalah Sub pohon

    6. Saudara

    Saudara adalah simpul-simpul yang mempunyai Ayah yang sama

    7. Daun

    Daun adalah simpul terminal dari pohon. Semua simpul selain Daun

    adalah simpul bukan terminal

    8. Jalan

    Jalan adalah suatu urutan tertentu dari Cabang

    9. Derajat

    [21]

  • 8/9/2019 Struktur Data Siap

    22/24

    Derajat sebuah pohon adalah banyaknya anak dari pohon tersebut.

    Jika sebuah simpul berderajat N disebut pohon N-aire

    1. Disebut pohon 1-aire/unear

    2. Disebut pohon 2-aire/biner

    10. Tingkat (Level)

    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.

    11. Kedalaman (Tinggi)

    Kedalaman (Tinggi) dari pohon adalah nilai maksimum dari tingkat

    simpul yang ada pada pohon tersebut. Kedalaman adalah panjang

    maksimum jalan dari Akar menuju sebuah daun

    12. Lebar

    Lebar sebuah pohon adalah maksimum banyaknya simpul yang ada pada

    suatu Tingkat (Level)

    Srtruktur Pohon Biner

    Sebuah pohon biner (Binary Tree) adalah himpunan terbatas yang :

    Mungkin kosong atau

    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.

    [22]

  • 8/9/2019 Struktur Data Siap

    23/24

    Istilah-istilah yang digunakan sama dengan istilah pada pohon secara umum.

    Notasi Prefiks, Infiks dan Postfiks

    1. Notasi Prefiks

    Notasi Prefiks ditulis dengan cara mengikuti alur sebagai berikut :

    2. Notasi Infiks

    Notasi ini ditulis dengan cara mengikuti alur sebagai berikut :

    3. Notasi Posfiks

    Notasi ini ditulis dengan cara mengikuti alur sebagai berikut :

    DAFTAR PUSTAKA

    1. Inggriani Liem. 2003. Diktat Kuliah Struktur Data. Bandung : ITB

    [23]

  • 8/9/2019 Struktur Data Siap

    24/24

    2. Bambang Wahyudi. 2004. Struktur Data dan Algoritma. Yogyakarta :

    Andi Offset

    3. Dwi Sanjaya. 2001. Bertualang dengan Struktur Data di Planet Pascal.

    Yogyakarta : JJ Learning

    4. P. Insap Santoso. 1997. Struktur Data dengan Turbo Pascal. Yogyakarta :

    Andi Offset

    [24]