Slide minggu 2 pertemuan 2 (struktur data1)

Post on 23-Jan-2018

642 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

Transcript

STRUKTUR DATA (1)

RECORD, ARRAY, LINKED LIST, STACK, QUEUE

Hanya digunakan untuk pengajaran di Telkom Applied Science School

Tel-U

Definisi Struktur Data

cara menyimpan dan merepresentasikan data dalam

komputer agar dapat dipergunakan dengan efisien.

Struktur data memiliki fungsionalitas : Mengurangi bertumpuknya data (data redudancy)

Penyimpanan data lebih efisien

Penyimpanan data tersusun lebih terurut

Struktur Data

Struktur Data

Sederhana

Record

Array

Majemuk

Linier

Stack

Queue

List

Non linier

Tree

Graph

Struktur Data Sederhana

Record

Disusun oleh satu atau lebih field. Tiap field menyimpan

data dari tipe dasar tertentu atau dari tipe bentukan lain

yang sudah didefinisikan sebelumnya.

Array

struktur data statik yang menyimpan sekumpulan elemen

yang bertipe sama. Setiap elemen diakses langsung

melalui indeksnya.

ARRAY

Array

1 Dimensi

Multidimensi

ARRAY

Array

1 Dimensi

Multidimensi

Array 1 DimensiA=(10, 5, 7, 9, 3, 7, 6)Beberapa bahasa pemrograman memulai array dari 0, dan yang lain mulai dari satuA[0]=10 A[1]=10Kita memulai indeks array mulai dari 1

ARRAY

Array

1 Dimensi

Multidimensi

Array MultidimensiMempunyai elemen-elemenyang disusun ke dalam barisdan kolom dan digunakansebagai tabel data Contoh : Nilai ujian darimahasiswa satu kelas untukbeberapa mata kuliah bisaditempatkan dalam array 2 dimensi

Siswa ke

(no. baris)

B. Inggris

(kolom 1)

Matematika

(kolom 2)

1

2

3

4

5

A(1,1) = 56

A(2,1) = 42

A(3,1) = 89

A(4,1) = 65

A(5,1) = 48

A(1,2) = 44

A(2,2) = 36

A(3,2) = 73

A(4,2) = 86

A(5,2) = 51

Record

Jenis-jenis record

1. type Titik : record <x : real, y : real>

2. Tipe terstruktur yang mewakili Jam , dinyatakan

sebagai jam (hh), menit (mm) dan detik (ss)

Struktur Data Majemuk

Struktur Data Majemuk

Linier

Linked List

Stack

Queue

Non Linier

Tree

Graph

Linked ListLINKED LIST

struktur data yang terdiri dari rantaian elemen sejenis yang saling berhubungan. Setiap elemen memiliki pendahulu danpenerusnya (kecuali elemen terakhir)

Contoh:Struktur ini mirip kereta api, dimana kepalanya sepertilokomotif, elemennya seperti gerbong kereta dan datanyaseperti penumpang/barang

Beberapa simpul/node yang saling terhubung dengan bantuanpointer.Setiap simpul berisi :

• Field Data / informasi

• Field Pointer untuk menunjuk simpul berikutnya

Linked List (2)Berdasarkan banyaknya POINTER, LINKED LIST dibedakan menjadi :

• Single Linked List

• Double Linked List

• Multiple Linked List

Data Ptr

Data Ptr2Ptr1

Data Ptr2Ptr1

Ptr3

Single Linked list dapat dibangun dengan 3 cara:

• Insert depan, node baru selalu berada didepan ( menjadi Head baru).

• Insert belakang, node baru selalu berada di belakang (menjadi Tail).

• Insert setelah posisi current pointer.

12

Single Linked List

ARI 460

400

HEAD

RIA 520

460

CURRENT

IDA520

TAIL

NULL

Single Linked List

MODEL LINKED LIST

X1 X2 X3 X4S

Item /

Data

Penunjuk

Kepala

NIL

p q r s

KAMUS DATA LINK LIST

Info Next

Elemen Senarai

Kamus Data :

Info : array [1..4] of String

Next : array [1..4] of Integer

A

C

B

D

3

4

2

Nil

Info Next

1

2

3

4

REPRESENTASI LINK LIST DENGAN

ARRAY

Link List / List Berkait

A

C

B

D

3

4

2

Nil

Info Next

1

2

3

4

A B C DS

1 3 2 4

S

NOTASI Info dan Next

Dua Notasi :

INFO (x) : Data yang ada di alamat X

NEXT (x) : Alamat elemen berikut setelah X

A B C DS

1 3 2 4

Contoh : Next (1) = 3 Info (1) = A

17

DoubleLinked List

Elemen pertama disimpan pada node satu

Elemen terakhir pada node terakhir

akhirpertama

elemen

Double Linked list dapat dibangun dengan 2 cara:

• InsertBefore, insert sebelum posisi Current.

• InsertAfter, insert setelah posisi Current.

Create();

Untuk menciptakan Linked List yang baru dan kosong.

Insert(type e)

Untuk menambahkan 1 elemen/data ke dalam Linked List.

int Empty()

Untuk memeriksa apakah Linked List masih kosong atau

sudah berisi data.

Retrieve (type *e)

Untuk mengubah isi elemen yang ditunjuk oleh pointer

current dengan isi dari variable yang dikirim (variable e).

Find_First()

Untuk mencari elemen pertama : yaitu dengan memposisikanpointer Current ke posisi HEAD.

Find_Next()

Untuk mencari elemen berikut yang ditunjuk oleh Pointer Current.

Delete()

Untuk menghapus elemen yang ditunjuk oleh Pointer Current.18

Operasi Dalam Linked List

STACK

Stack merupakan bentuk khusus dari suatu struktur

data, dimana node yang ditambahkan ke dalam list

dan diambil dari list hanya pada 'kepala'nya, atau

dengan kata lain prinsip pengolahannya adalah last-

in first-out (LIFO).

Mekanisme pada Stack :

- Push : adalah mekanisme menambah elemen pada

bagian atas

- Pop : mekanisme mengambil dan mengembalikan

elemen yang terakhir masuk

20

STACK

Ilustrasi LIFO

Contohnya kita menumpuk Compo di posisi terakhir, makaCompo akan menjadielemen teratas dalamtumpukan. Sebaliknya,karena kita menumpuk Televisi pada saat pertama kali, maka elemen Televisi menjadi elemen terbawah dari tumpukan. Dan jika kitamengambil elemen daritumpukan, maka secaraotomatis akan terambilelemen teratas, yaituCompo juga.

Operasi PUSH pada Stack

Operasi PUSH : Menambahkan elemen pada sebuah stack

1

PUSH

top== bottom

Operasi PUSH pada Stack

Operasi PUSH : Menambahkan elemen pada sebuah stack

PUSH

Operasi PUSH pada Stack

1

2 top

bottom

Operasi PUSH : Menambahkan elemen pada sebuah stack

PUSH

Operasi PUSH pada Stack

1

2

3

bottom

top

Operasi PUSH : Menambahkan elemen pada sebuah stack

PUSH

Operasi PUSH pada Stack

1

2

3

4

bottom

top

Operasi POP pada Stack

Operasi POP : Menghapus sebuah elemen dari sebuah stack

POP

Operasi POP pada Stack

1

2

3

4

5

6

bottom

top

Operasi POP : Menghapus sebuah elemen dari sebuah stack

POP

1

2

3

4

5

bottom

top

Operasi POP pada Stack

Operasi POP : Menghapus sebuah elemen dari sebuah stack

POP

Operasi POP pada Stack

1

2

3

bottom

top4

Contoh Lengkap Push dan Pop

Studi Kasus Stack

Pembuatan Kalkulator SCIENTIFIC Misalkan operasi: 3 + 2 * 5

Operasi di atas disebut notasi infiks, notasi infiks tersebut harus diubah lebih dahulu menjadi notas postfix

3 + 2 * 5 notasi postfiksnya adalah 3 2 5 * +

Studi Kasus Stack (2) – Infix to Postfix

Baca soal dari depan ke belakang

Jika berupa operand, maka masukkan ke posftix

Jika berupa operator, maka: Jika stack masih kosong, push ke stack Jika derajat operator soal > derajat operator top of stack

Push operator soal ke stack

Selama derajat operator soal <= derajat operator top of stack Pop top of stack dan masukkan ke dalam posfix

Setelah semua dilakukan, push operator soal ke stack

Jika sudah semua soal dibaca, pop semua isi stack dan push ke postfix sesuai dengan urutannya

3 + 2 * 5

stack

posftix

Studi Kasus Stack (3)

Contoh lain

a+b*c-d Stack (kosong) dan Postfik (kosong)

Scan a Postfik: a

Scan + Stack: +

Scan b Postfik: ab

Scan *, karena ToS (+) < *, maka add ke Stack Stack: +*

Contoh

Scan c Postfik: abc

Scan –, karena * > -, maka pop Stack, dan add ke Postfik Stack: +

Postfik: abc*

Karena + >= -, maka pop Stack, dan add ke Postfik, karena Stack kosong, maka push – ke stack

Stack: -

Postfik: abc*+

Scan d Postfik: abc*+d

Karena sudah habis, push ToS stack ke Posfix Postfix: abc*+d-

Postfix Evaluator

Scan Postfix string dari kiri kekanan.

Siapkan sebuah stack kosong.

Jika soal adalah operand, tambahkan ke stack. Jika operator, maka pasti akan ada minimal 2 operand pada stack

Pop dua kali stack, pop pertama disimpan dalam y, dan pop kedua ke dalam x. Lalu evaluasi x <operator> y. Simpan hasilnya dan push ke dalam stack lagi.

Ulangi hingga seluruh soal discan.

Jika sudah semua, elemen terakhir pada stack adalah hasilnya.

Jika lebih dari satu elemen, berarti error!

Contoh 325*+

Contoh pemanfaatan Stack

Pemanfaatan stack antara lain untuk menulis ungkapandengan

menggunakan notasi tertentu.

Contoh :

( A + B ) * ( C – D )

Tanda kurung selalu digunakan dalam penulisan ungkapannumeris untuk

mengelompokkan bagian mana yang akan dikerjakan terlebihdahulu.

Dari contoh ( A + B ) akan dikerjakan terlebih dahulu, kemudianbaru (C– D ) dan terakhir hasilnya akan dikalikan

A + B * C – D

B * C akan dikerjakan terlebih dahulu, hasil yang didapat akanberbeda

dengan hasil notasi dengan tanda kurung

QUEUE

Queue (Antrian)

Definisi : struktur data (mirip stack) yang memperbolehkan

penyisipan di belakang (rear) dan penghapusan elemen didepan (front)

Bersifat FIFO (First In First Out)

Elemen yang pertama masuk ke antrian akan keluar pertama kalinya

Contoh : Penjualan karcis kereta, bioskop

Penjadwalan pencetakan (spooling system)

Penjadualan pemakaian CPU

Pemakaian I/O pada sistem komputer

Penyimpan barang di Apotek

MODEL ANTRIAN / QUEUEStruktur Data

Kosong 1 Elemen

0

Depan

4 Elemen

A A

B

C

D0

Belakang

1

Depan

1

Belakang

1

Depan

4

Belakang

OPERASI DASARA n t r I a n

Dua operasi dasar ANTRIAN :

TAMBAH (enqueue)

AMBIL (dequeue)

TAMBAHAMBIL

TAMBAH ELEMENStruktur Data Antrian

A B C DDepan = 0

Belakang = 0

Depan = 1

Belakang = 1

Depan = 1

Belakang = 2

Depan = 1

Belakang = 3

Depan = 1

Belakang = 4

AMBIL ELEMEN (DEQUEUE)Struktur Data Antrian

A B C D

Ambil 1 elemen

Depan = 1

Belakang = 3

Geser antrian

AMBIL ELEMEN (DEQUEUE)Struktur Data Antrian

A B C D

Ambil 1 elemen

Depan = 1

Belakang = 3

Geser antrian

AMBIL ELEMEN (DEQUEUE)Struktur Data Antrian

B C D

Ambil 1 elemen

Depan = 1

Belakang = 2

Geser antrian

AMBIL ELEMEN (DEQUEUE)Struktur Data Antrian

C D

Ambil 1 elemen

Depan = 1

Belakang = 1

Geser antrian

AMBIL ELEMEN (DEQUEUE)Struktur Data Antrian

D

Ambil 1 elemen

Depan = 0

Belakang = 0

top related