linked list
DESCRIPTION
Linked List. Bab 4. Buku :. halaman 88. Linked List. Linked List ( Obyek yang di-Link satu dengan lainnya ). apa itu List ?. Contoh sebuah LIST. 0 1 2 3 4. int A[5];. Array satu dimensi. Array satu dimensi Disebut juga : Vector - PowerPoint PPT PresentationTRANSCRIPT
1
2
3
Linked List( Obyek yang di-Link
satu dengan
lainnya )
4
apa itu List ?
5
Contoh sebuah LIST
int A[5];
0 1 2 3 4
Array satu dimensiDisebut juga : VectorKadang-kadang disebut juga : List
Array satu dimensi
6
int A[5];
0 1 2 3 4
biasa diilustrasikan sebagai berikut :
Kadang-kadang diilustrasikan sebagai berikut :
0
1
2
3
4
4
3
2
1
0
Untuk StackUntuk daftar
7
0 1 2 3 4
int A[5];
A[0]
List dengan 5 elemen
A[1] A[4]
secara umum : A[ I ]
8
0 1 2 3 4
int A[5]; List dengan 5 elemen, dengan alamat CONTIGUOUS
H21D8H21DA
H21DC
H21DEH21E0
#include<stdio.h>void main(){ int A[5]; int I; for (I=0; I<=4; I++ ) printf( “\n%X”, &A[I] );}
akan tercetak :
21D821DA21DC21DE21E0
Tiap elemen 2 BYTE
9
Apa itu alamat ?
10
Alamat atau Addressadalah nomor Byte
RAM 64 MB
0 1 2 3 4
64*1024*1024-1
11
dengan: int A;terbentuk sebuah variabel (Elemen)sebesar 2 Byte
2 BYTE
Nomor BYTE pertama (paling kiri)- sering disebut MSB -yang dipakai sebagai alamat
MSB = Most Significant Byte
12
0 1 2 3 4
int A[5]; List dengan 5 elemen
ini bukan Linked Listbukan List yang di-link satu dengan yang lainnya
tapi List yang bersisian atau bergandengan atau berurutan (contiguous) satu dengan lainnya, sedemikian rupa sehingga alamat tiap elemen bersambung satu dengan yang lainnya (contiguous).
13
Linked List
Obyek yang di-link satu dengan lainnya sehingga
menjadi suatu List
Yang dimaksud dengan
Obyek disini adalah :
sekumpulan elemenyang digabungmenjadi satu kelompok yang disebut : structure,
atau Vertex, atau Node, atau Titik,atau Recordatau
Simpul
setiap elemenmempunyai tipe datatersendiri
14
Linked List Contoh pembuatan struktur sebuah Simpul yang dinyatakan dengan:
INFO LINK
typedef struct Node { int INFO; struct Node *LINK; };typedef struct Node Simpul;
Tipe : integer untuk menyimpan data
tipe : pointer, pointer untuk menunjuk node atau Simpul
Simpul dengan 2 elemen, INFO dan LINK
15
16
Perhatikan instruksi berikut ini :
int A;A = 25;printf(“%i”, A);
Tercetak : 25
17
int A;A = 25;printf(“%i”, A);
int A;Tercetak : 25
A
intDibuat sebuah variabel dengan :Nama : A
Tipe : integerVariabel adalah suatu area didalam memory yang isinya dapat diubah-ubah
18
int A;A = 25;printf(“%i”, A);
int A;
Tercetak : 25
A
intSebuah variabel dengan tipe integer, dalam memory menempati area sebanyak :
. . . . . Byte
Disiapkan sebuah variabel :Nama : ATipe : integer
19
int A;
A
intSebuah variabel dengan tipe integer, dalam memory menempati area sebanyak :
. . . . . Byte
int A;A = 25;printf(“%i”, A);
Tercetak : 25
20
Dapat menampung nilai dalam batas ( kisaran / range) :
…………………………… Sampai dengan ……………………….
int A;
A
int
int A;A = 25;printf(“%i”, A);
Tercetak : 25
21
-32768 32767
Dapat menampung nilai dalam batas ( kisaran / range) :
…………………………… Sampai dengan ……………………….
int A;
A
int
int A;A = 25;printf(“%i”, A);
Tercetak : 25
22
Pertanyaan : Apakah variabel ini ada isinya ?
J a w a b :
int A;A = 25;printf(“%i”, A);
Tercetak : 25
int A;
A
int
…………………………
23
A D A
int A;A = 25;printf(“%i”, A);
Tercetak : 25
int A;
A
intPertanyaan : Apakah variabel ini ada isinya ?
J a w a b : …………………………
24
Pertanyaan : Apa / berapa isinya ?
J a w a b :
int A;A = 25;printf(“%i”, A);
Tercetak : 25
int A;
A
int
………………………...
25
TIDAK DIKETAHUI
int A;A = 25;printf(“%i”, A);
Tercetak : 25
int A;
A
intPertanyaan : Apa / berapa isinya ?
J a w a b : ………………………...
26
int A;A = 25;printf(“%i”, A);
Tercetak : 25
27
Isinya jelas = 25
int A;A = 25;printf(“%i”, A);
Tercetak : 25
int A;A = 25;
25
A
int
28
int A;A = 25;printf(“%i”, A);
25
A
int
Yang dicetak ISI
variabel A
Dicetak dengan menggunakan format integer
int A;A = 25;printf(“%i”, A);
Tercetak : 25
29
30
int A;int *P;A = 25;P = &A;printf(“%i”, *P);
int A;A = 25;printf(“%i”, A);
Tercetak : 25
25
A
int
25 21C8
int *int
A P
H21C8
Tercetak : 25
31
32
int A;
int
A
int A;int *P;A = 25;P = &A;printf(“%i”, *P);
Tercetak : 25
33
int A;int *P;
*int
P
int A;int *P;A = 25;P = &A;printf(“%i”, *P);
Tercetak : 25
int
A
34
int A;int *P;
P adalah variabel bertipe : Pointer Integer
Hanya dapat diisi dengan alamat,
Alamat variabel yang bertipe int (integer).Tidak dapat diisi dengan nilai seperti nilai ujian, jumlah barang, umur dan sebagainya
int A;int *P;A = 25;P = &A;printf(“%i”, *P);
Tercetak : 25
*int
P
int
A
35
int A;int *P;
int A;int *P;A = 25;P = &A;printf(“%i”, *P);
Tercetak : 25
*int
P
int
A
36
int A;int *P;A = 25;
int A;int *P;A = 25;P = &A;printf(“%i”, *P);
Tercetak : 25
*int
P
25
int
A
37
int A;int *P;A = 25;P = &A;
int A;int *P;A = 25;P = &A;printf(“%i”, *P);
Tercetak : 25
21C8
*int
P
25
int
A
38
int A;int *P;A = 25;P = &A;
H21C8 Misal alamat variabel A berada pada Hexa 21C8
Pointer P diisi dengan alamat variabel A
int A;int *P;A = 25;P = &A;printf(“%i”, *P);
Tercetak : 25
21C8
*int
P
25
int
A
39
int A;int *P;A = 25;P = &A;
Pointer P diisi dengan alamat variabel A
Tanda &menyatakan alamat
int A;int *P;A = 25;P = &A;printf(“%i”, *P);
Tercetak : 25
H21C8 Misal alamat variabel A berada pada Hexa 21C8
21C8
*int
P
25
int
A
40
int A;int *P;A = 25;P = &A;
Alamat variabel A misal : 21C8 , dalam notasi Hexa Decimal
Pointer P diisi dengan alamat variabel A
Tanda &menyatakan alamat
int A;int *P;A = 25;P = &A;printf(“%i”, *P);
Tercetak : 25
H21C8 Misal alamat variabel A berada pada Hexa 21C8
21C8
*int
P
25
int
A
41
H21C8 = D …………………
(21C8)16 = ( …………… )10
2 1 C 8
Bilangan Hexa : x x x x . x x 4096 256 16 1 1/16 1/256
8 x 1 = 8
12 x 16 = 192
1 x 256 = 256
2 x 4096 = 8192 +8648
42
H21C8 = D …………………
(21C8)16 = ( …………… )10
2 1 C 8
Bilangan Hexa : x x x x . x x 4096 256 16 1 1/16 1/256
8 x 1 = 8
12 x 16 = 192
1 x 256 = 256
2 x 4096 = 8192 +8648
1 / 2
1 / 4
1 / 8
1 / 16
1 / 32
1 / 64
1 / 128
1 / 256
========
0.5
0.25
0.125
0.0625
0.03125
0.015625
0.0078125
0.00390625
43
int A;int *P;A = 25;P = &A;
int A;int *P;A = 25;P = &A;printf(“%i”, *P);
Tercetak : 25
H21C8
21C8
*int
P
25
int
A
44
int A;int *P;A = 25;P = &A;printf(“%i”, *P);
Tercetak : 25Mencetak isi variabel yang alamatnya disimpan dalam Pointer P
int A;int *P;A = 25;P = &A;printf(“%i”, *P);
Tercetak : 25
H21C8
21C8
*int
P
25
int
A
45
int A;int *P;A = 25;P = &A;printf(“%i”, *P);
Tercetak : 25
H21C8
21C8
*int
P
25
int
A
46
INFO LINK
typedef struct Node { int INFO; struct Node *LINK; };typedef struct Node Simpul;
Tulisan dengan warna biru atau
merah, adalah nama yang kita karang sendiri.Sedangkan tulisan dengan warna hitam adalah ketentuan dalam bahasa C
47
Contoh 4 buah simpul Linked Listdalam memory
25
12
17
10
(1)
(2)
(3)
(4)
tanda panah mengilustrasikan link
48
Proses pembuatan Simpul dan pembuatan Linksampai terbentuk
sebuah Linked-List
49
Perhatikan memory berikut ini :
Belum ada Linked List
50
Akan dibuat sebuah Simpul Awal(simpul pertama)
51
Simpul pertama (1) sudah dibuatmisal alamatnya = H1000
H1000
INFO LINK
(1)
Bagaimana membuatnya akan diterangkan kemudian
52
H1000
INFO LINK
Kemudian INFO akan diisidengan nilai 25
(1)
53
25
H1000
INFO LINK
INFO simpul pertama (1)sudah diisi dengan nilai 25
(1)
Bagaimana cara mengisinya akan diterangkan kemudian
54
25
Misal akan dibuat sebuah simpul baru (simpul kedua)
H1000
INFO LINK
(1)
55
25
H1000
INFO LINK
Sudah dibuat simpul kedua (2)Misal alamatnya = H0800
H0800
INFO LINK
(1)
(2)
Alamat simpul baru, tidak mesti lebih besar dari alamat simpul pertama
56
25
H1000
INFO LINK
H0800
INFO LINK
INFO simpul kedua (2)akan diisi dengan 12
(1)
(2)
57
25
H1000
INFO LINK
INFO simpul kedua (2)sudah diisi dengan nilai 12
12
H0800
INFO LINK
(1)
(2)
58
25
H1000
INFO LINK
Akan di-link simpul pertama (1) dengan simpul kedua (2)
12
H0800
INFO LINK
(1)
(2)
59
25 0800
H1000
INFO LINK
Simpul pertama (1) sudah di-linkdengan simpul kedua (2)
12
H0800
INFO LINK
LINK simpul pertama (1)diisi dengan alamatsimpul kedua (2)
(1)
(2)
Bagaimana mengisi LINK simpul pertama dengan alamatsimpul kedua akan diterangkan kemudian
60
25 0800
H1000
INFO LINK
12
H0800
INFO LINK
(1)
(2)
Instruksi untuk meng-link yaitu mengisi alamat simpul (2) kedalam LINK simpul (1)termasuk intruksi atau tugas yang sulit
!
61
25 0800
H1000
INFO LINK
12
H0800
INFO LINK
(1)
(2)
Kemudian :Akan dibuat simpul (3), danINFO simpul (3) diisi dengan 17
62
25 0800
H1000
INFO LINK
12
H0800
INFO LINK
(1)
(2)
Sudah dibuat simpul ketiga (3)Misal alamatnya = H1400
17
H1400
INFO LINK
(3)
63
25 0800
H1000
INFO LINK
12
H0800
INFO LINK
(1)
(2)
Akan di-link simpul kedua (2) dengan simpul ketiga (3)
Kemudian :
17
H1400
INFO LINK
(3)
64
25 0800
H1000
INFO LINK
12 1400
H0800
INFO LINK
(1)
(2)
Simpul kedua (2) sudah di-linkdengan simpul ketiga (3)
17
H1400
INFO LINK
(3)
65
25 0800
H1000
INFO LINK
12 1400
H0800
INFO LINK
(1)
(2)
17 1100
H1400
INFO LINK
(3)
Dan seterusnya dibuat simpul (4),INFO simpul (4) diisi 10dan simpul (3) di-link dengan simpul (4)
10
H1100
INFO LINK
(4)
66
25 0800
H1000
INFO LINK
12 1400
H0800
INFO LINK
(1)
(2)
17 1100
H1400
INFO LINK
(3)
10
H1100
INFO LINK
(4)
Sekarang sudah tercipta 4 buah simpul,dan sudah ter-link satu dengan lainnya,sehingga membentuk sebuah Linked List
67
Untuk memudahkan melihat hubungan (link) antara satu simpul dengan simpul lainnya, maka semua isi LINK (yang berbentuk angka ) diganti atau direpresentasikan dengan tanda panahsehingga ilustrasinya menjadi sebagai berikut :
68
25 0800
H1000
INFO LINK
12 1400
H0800
INFO LINK
(1)
(2)
17 1100
H1400
INFO LINK
(3)
10
H1100
INFO LINK
(4)
Semua alamat dalam LINK dinyatakan dengan tanda panah.
69
25
H1000
INFO LINK
12
H0800
INFO LINK
(1)
(2)
17
H1400
INFO LINK
(3)
10
H1100
INFO LINK
(4)
Link dalam bentukangka alamat tidak diperlukan lagi
Sehingga:
70
25
H1000
INFO LINK
12
H0800
INFO LINK
17
H1400
INFO LINK
10
H1100
INFO LINK
Alamat tiap-tiap simpul juga tidak perlu diketahui, Yang perlu diketahui adalah link antar simpul sehingga membentuk sebuah Linked List.
71
25
INFO LINK
12
INFO LINK
17
INFO LINK
10
INFO LINK
Linked List empat buah simpuldapat dinyatakan demikian ini,tanpa memperlihatkan alamat simpul secara fisik
72
25
INF
O
LIN
K
12
(1) (2)
17
(3)
10
(4)
Linked List empat buah simpul ini dapat disederhanakan gambarnya menjadi :
INF
O
LIN
K
INF
O
LIN
K
INF
O
LIN
K
73