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 Dimensi
A=(10, 5, 7, 9, 3, 7, 6)
Beberapa bahasa pemrograman memulai array dari 0, dan yang lain
mulai dari satu
A[0]=10  A[1]=10
Kita memulai indeks array mulai dari 1
ARRAY
Array
1 Dimensi
Multidimensi
Array Multidimensi
Mempunyai elemen-elemen
yang disusun ke dalam baris
dan kolom dan digunakan
sebagai tabel data
Contoh : Nilai ujian dari
mahasiswa satu kelas untuk
beberapa mata kuliah bisa
ditempatkan 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 List
LINKED LIST
struktur data yang terdiri dari rantaian elemen sejenis yang
saling berhubungan. Setiap elemen memiliki pendahulu dan
penerusnya (kecuali elemen terakhir)
Contoh:
Struktur ini mirip kereta api, dimana kepalanya seperti
lokomotif, elemennya seperti gerbong kereta dan datanya
seperti penumpang/barang
Beberapa simpul/node yang saling terhubung dengan bantuan
pointer.
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
IDA
520
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 memposisikan
pointer 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, maka
Compo akan menjadi
elemen teratas dalam
tumpukan.
Sebaliknya,karena kita
menumpuk Televisi pada
saat pertama kali, maka
elemen Televisi menjadi
elemen terbawah dari
tumpukan. Dan jika kita
mengambil elemen dari
tumpukan, maka secara
otomatis akan terambil
elemen teratas, yaitu
Compo 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 ungkapan
dengan
menggunakan notasi tertentu.
Contoh :
( A + B ) * ( C – D )
Tanda kurung selalu digunakan dalam penulisan ungkapan
numeris untuk
mengelompokkan bagian mana yang akan dikerjakan terlebih
dahulu.
Dari contoh ( A + B ) akan dikerjakan terlebih dahulu, kemudian
baru (C– D ) dan terakhir hasilnya akan dikalikan
A + B * C – D
B * C akan dikerjakan terlebih dahulu, hasil yang didapat akan
berbeda
dengan hasil notasi dengan tanda kurung
QUEUE
Queue (Antrian)
 Definisi :
 struktur data (mirip stack) yang memperbolehkan
penyisipan di belakang (rear) dan penghapusan elemen di
depan (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 / QUEUE
Struktur Data
Kosong 1 Elemen
0
Depan
4 Elemen
A A
B
C
D
0
Belakang
1
Depan
1
Belakang
1
Depan
4
Belakang
OPERASI DASAR
A n t r I a n
Dua operasi dasar ANTRIAN :
TAMBAH (enqueue)
AMBIL (dequeue)
TAMBAHAMBIL
TAMBAH ELEMEN
Struktur Data Antrian
A B C D
Depan = 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

Slide minggu 2 pertemuan 2 (struktur data1)

  • 1.
    STRUKTUR DATA (1) RECORD,ARRAY, LINKED LIST, STACK, QUEUE Hanya digunakan untuk pengajaran di Telkom Applied Science School Tel-U
  • 2.
    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
  • 3.
  • 4.
    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.
  • 5.
  • 6.
    ARRAY Array 1 Dimensi Multidimensi Array 1Dimensi A=(10, 5, 7, 9, 3, 7, 6) Beberapa bahasa pemrograman memulai array dari 0, dan yang lain mulai dari satu A[0]=10  A[1]=10 Kita memulai indeks array mulai dari 1
  • 7.
    ARRAY Array 1 Dimensi Multidimensi Array Multidimensi Mempunyaielemen-elemen yang disusun ke dalam baris dan kolom dan digunakan sebagai tabel data Contoh : Nilai ujian dari mahasiswa satu kelas untuk beberapa mata kuliah bisa ditempatkan 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
  • 8.
    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)
  • 9.
    Struktur Data Majemuk StrukturData Majemuk Linier Linked List Stack Queue Non Linier Tree Graph
  • 10.
    Linked List LINKED LIST strukturdata yang terdiri dari rantaian elemen sejenis yang saling berhubungan. Setiap elemen memiliki pendahulu dan penerusnya (kecuali elemen terakhir) Contoh: Struktur ini mirip kereta api, dimana kepalanya seperti lokomotif, elemennya seperti gerbong kereta dan datanya seperti penumpang/barang Beberapa simpul/node yang saling terhubung dengan bantuan pointer. Setiap simpul berisi : • Field Data / informasi • Field Pointer untuk menunjuk simpul berikutnya
  • 11.
    Linked List (2) Berdasarkanbanyaknya POINTER, LINKED LIST dibedakan menjadi : • Single Linked List • Double Linked List • Multiple Linked List Data Ptr Data Ptr2Ptr1 Data Ptr2Ptr1 Ptr3
  • 12.
    Single Linked listdapat 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 IDA 520 TAIL NULL Single Linked List
  • 13.
    MODEL LINKED LIST X1X2 X3 X4S Item / Data Penunjuk Kepala NIL p q r s
  • 14.
    KAMUS DATA LINKLIST 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
  • 15.
    REPRESENTASI LINK LISTDENGAN 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
  • 16.
    NOTASI Info danNext 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.
    17 DoubleLinked List  Elemenpertama 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.
  • 18.
     Create(); Untuk menciptakanLinked 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 memposisikan pointer 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
  • 19.
  • 20.
    Stack merupakan bentukkhusus 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
  • 21.
    Ilustrasi LIFO  Contohnyakita menumpuk Compo di posisi terakhir, maka Compo akan menjadi elemen teratas dalam tumpukan. Sebaliknya,karena kita menumpuk Televisi pada saat pertama kali, maka elemen Televisi menjadi elemen terbawah dari tumpukan. Dan jika kita mengambil elemen dari tumpukan, maka secara otomatis akan terambil elemen teratas, yaitu Compo juga.
  • 22.
  • 23.
     Operasi PUSH: Menambahkan elemen pada sebuah stack 1 PUSH top== bottom Operasi PUSH pada Stack
  • 24.
     Operasi PUSH: Menambahkan elemen pada sebuah stack PUSH Operasi PUSH pada Stack 1 2 top bottom
  • 25.
     Operasi PUSH: Menambahkan elemen pada sebuah stack PUSH Operasi PUSH pada Stack 1 2 3 bottom top
  • 26.
     Operasi PUSH: Menambahkan elemen pada sebuah stack PUSH Operasi PUSH pada Stack 1 2 3 4 bottom top
  • 27.
  • 28.
     Operasi POP: Menghapus sebuah elemen dari sebuah stack POP Operasi POP pada Stack 1 2 3 4 5 6 bottom top
  • 29.
     Operasi POP: Menghapus sebuah elemen dari sebuah stack POP 1 2 3 4 5 bottom top Operasi POP pada Stack
  • 30.
     Operasi POP: Menghapus sebuah elemen dari sebuah stack POP Operasi POP pada Stack 1 2 3 bottom top4
  • 31.
  • 32.
    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 * +
  • 33.
    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
  • 34.
  • 35.
    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: +*
  • 36.
    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-
  • 37.
    Postfix Evaluator  ScanPostfix 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!
  • 38.
  • 39.
    Contoh pemanfaatan Stack Pemanfaatanstack antara lain untuk menulis ungkapan dengan menggunakan notasi tertentu. Contoh : ( A + B ) * ( C – D ) Tanda kurung selalu digunakan dalam penulisan ungkapan numeris untuk mengelompokkan bagian mana yang akan dikerjakan terlebih dahulu. Dari contoh ( A + B ) akan dikerjakan terlebih dahulu, kemudian baru (C– D ) dan terakhir hasilnya akan dikalikan A + B * C – D B * C akan dikerjakan terlebih dahulu, hasil yang didapat akan berbeda dengan hasil notasi dengan tanda kurung
  • 40.
  • 41.
    Queue (Antrian)  Definisi:  struktur data (mirip stack) yang memperbolehkan penyisipan di belakang (rear) dan penghapusan elemen di depan (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
  • 42.
    MODEL ANTRIAN /QUEUE Struktur Data Kosong 1 Elemen 0 Depan 4 Elemen A A B C D 0 Belakang 1 Depan 1 Belakang 1 Depan 4 Belakang
  • 43.
    OPERASI DASAR A nt r I a n Dua operasi dasar ANTRIAN : TAMBAH (enqueue) AMBIL (dequeue) TAMBAHAMBIL
  • 44.
    TAMBAH ELEMEN Struktur DataAntrian A B C D Depan = 0 Belakang = 0 Depan = 1 Belakang = 1 Depan = 1 Belakang = 2 Depan = 1 Belakang = 3 Depan = 1 Belakang = 4
  • 45.
    AMBIL ELEMEN (DEQUEUE) StrukturData Antrian A B C D Ambil 1 elemen Depan = 1 Belakang = 3 Geser antrian
  • 46.
    AMBIL ELEMEN (DEQUEUE) StrukturData Antrian A B C D Ambil 1 elemen Depan = 1 Belakang = 3 Geser antrian
  • 47.
    AMBIL ELEMEN (DEQUEUE) StrukturData Antrian B C D Ambil 1 elemen Depan = 1 Belakang = 2 Geser antrian
  • 48.
    AMBIL ELEMEN (DEQUEUE) StrukturData Antrian C D Ambil 1 elemen Depan = 1 Belakang = 1 Geser antrian
  • 49.
    AMBIL ELEMEN (DEQUEUE) StrukturData Antrian D Ambil 1 elemen Depan = 0 Belakang = 0