Modul Struktur Data Halaman 1 (1)
Modul Struktur Data
STRUKTUR DATA
Pertemuan s.d
Sasaran:
Meningkatkan:
pemahaman pengetahuan tentang teori dasar struktur data dan penanganan
data
serta pembuatan algoritma dan penggunaan strukturd dalam pemrograman
Materi :
. Konsep dan Definisi
- Tipe dan definisi
- Operasi Data
. Stack dan Queue
- Operasi dan aplikasi Stack
- Operasi dan aplikasi Queue dan Deque
. Linked List
- Konsep pointer dari Linked List
- Operasi pointer dari Linked List
- Jenis Linked List Single dan Double
. Tree dan Graph
- Terminologi, karakteristik dan struktur hirarkhi Tree
- Terminologi, Representasi dan Traversal dari Graph
Halaman 1
Modull Struktur Datta
Konsep dan Definisi
Definiisi Data
Adalah
h fakta ataau kenyataaan tercataat mengen
nai suatu o
obyek
Pengeertian dataa ini men
nyiratkan suatu nillai bisa daalam benttuk konsttanta atau
u
variab
bel
Tipe D
Data
Tipe Daata
Sedeerhana
Reaal
Terstrukttur
Ordinal
String
Flat
)ntegerr
Record
Double
Characteer
array
Boolean
n
File
Set
Tipe daata sederhaana:
Hanya dimungkinnkan untukk menyimpan satu nilaai dalam saatu variabeel
m
yaaitu:
Ada 5 macam,
1. bilaangan bulatt (integer)
2. bilaangan real presisi
p
tungggal
bilaangan real presisi
p
gannda
3. karaakter
4. tak bertipe (unnsign)
5. booolean (operrator logik))
Halaman 2
Modul Struktur Data
Tipe data terstrukrur
Adalah tipe data dimana satu variabel dapat menyimpan lebih dari satu nilai data
Masing‐masing nilai data disebut komponen.
Ada macam, yaitu:
. Data String
Data yang berisi sederetan karakter dimana banyaknya karakter bisa berubah‐
ubah sesuai kebutuhan
Bentuk umum : char nama variabel[ukuran]
Contoh : char nama[ ]
. Larik array
dimana variabel larik hanya bisa menyimpan tipe data saja
Bentuk umum : Tipe data namavariabel[ukuran]
Contoh : float X[ ]
int datax[ ]
. Record
terdiri dari beeberapa variabel dimana masing‐masing variabel bisa
mempunyai tipe yang berbeda
Bentuk umum :
struct nama_tipe_struct
{
tipe field‐ ;
tipe field‐ ;
...................
tipe field‐n;
} var_ struct
Contoh :
struct data_tanggal
{
int tanggal;
int bulan;
int tahun;
}
struct data_mhs
{
char nama[ ];
struct data_tanggal;
} info_mhs;
Halaman 3
Modul Struktur Data
nama_mhs
tanggal
info_mhs
data_tanggal
bulan
tahun
. Set himpunan
Memungkinkan suatu lokasi memori ditempati oleh satu atau lebih variabel
yang tipenya bisa berlainan.
1. union
Bentuk umum:
Union nama_union;
Contoh:
union
{
unsigned int data_int;
unsigned char data_char[ ];
} bil_x;
2. enumerius
merupakan himpunan dari konstanta integer yang diberi nama
Bentuk umum:
enum nama_enum
{
konstanta_ , jonstanta_ ;
konstanta_n;
} var_ , var_ ;
Contoh:
enum manusia { pria, wanita };
enum manusia jenis_kelamin;
Bila jenis_kelamin diisi pria maka nilai jenis kelamin= dan sebaliknya
bila diisi wanita nilai jenis_kelamin=
Halaman 4
Modull Struktur Datta
5. Fille
Filee merupak
kan organ
nisasi darii sejumlah
h record seejenis. Maasing‐masiing record
d
terrdiri dari ssatu atau leebih field d
dan field terdiri darii satu atau
u lebih karrakter.
File
e
Re
ecord
Field
Charr
Record
Field
C
Char
Tipe d
data Pointter
Variabel pointerr berisi alaamat dari suatu obyek lain yaaitu obyek
k yang ditu
unjuk oleh
h
pointerr tersebutt
Bentuk
k umum:
tipe *nama
a_ponter
Contoh
h:
in
nt *pa;
paa = &x; & berartii alamat
Artinya poin
nter pa meenunjuk allamat x
Algoritm
ma dan Pem
mrogram
man
Perm
masalahan
nnya adalaah bagaim
mana suatu
u masalah
h dapat d
diselesaikaan dengan
n
algo
oritma yan
ng tepat.
Dasaar‐dasar A
Algoritma:
elementerr; dan
Statement
S
Statement
S
kontrol
Stateement elementer terdiri dari:
Asignment
A
t X= , X=Y
Y
Compariso
C
n
Arithmatic
A
c Statemen
nt
Halaman 5
Modul Struktur Data
Statement kontrol terdiri dari:
Alternatif
Pengulangan
Percabangan
Statement elementer:
a. assignment
Untuk memberikan nilai ke variabel yang telah diseklarasikan. Bentuk
pernyataannya adalah
Contoh: total =
;
b. comparison
Untuk keperluan pengambilan keputusan diperlukan operator relasi seperti
> , 0)
{
x = s[top];
pritf (“\n\r x = %d top = %d”, x, top);
top = top – 1;
Halaman 7
Modul Struktur Data
}
else { printf(“\n\r
stack
kosong”); }
}
Soal: buat fungsi PUS(
Aplikasi stack antara lain :
. Dalam sistem operasi, pada saat aktivitas call dan return
. Pada proses kompilasi, untuk melakukan pengecekan kelengkapan pasangan
tanda kurung, kurung kotak, dll.
QUEUE antrian
Prinsip: F)FO First In First Out
atau
FCFS First Come First Serve
Ada macam pointer, yaitu: F Front dan R Rear
Untuk pengambilan data menggunakan pointer F sedang untuk pemasukkan data
menggunakan pointer R
Bila kondisi kosong F= dan R= sedang kondisi penuh R=N maka syarat
antrian adalah:
F link = first;
first = p;
printf(“\n sisip awal”);
}
else
{
p->link = NULL;
first = p;
printf(“\n create file”);
}
}
void insert_tengah(void)
{
struct
simpul *p , *q, *k;
p = (struct simpul *) malloc(sizeof(struct simpul));
strcpy(p->nama, nama);
if (first != NULL)
{
q = first;
while (q-> nama < nama)
{
k = q;
q = q->link;
}
p->link = q;
Halaman 11
Modul Struktur Data
k->link = p;
printf(“\n sisip
tengah “);
}
else
{
insert_awal()}
}
}
void delete_awal(void)
{
struct simpul *p;
if (first != NULL)
{
p = first;
first = first->link;
p->link = NULL;
strcpy(nama,p->nama);
free(p);
printf(“\n nama = % s”,nana);
}
else
{
printf(“\n list kosong“);
}
}
void delete_akhir(void)
{
struct simpul *p, *q;
if (first !=NULL)
{
p = first;
While (p->link != NULL)
{
q = p;
p = p->link;}
q->link = NULL;
strcpy(nama, q->nama);
printf(“\n
nama =5s “, nama);
free(p);
}
}
}
Halaman 12
Modul Struktur Data
Circular Doubly Linked List
Kondisi kosong :
head‐>right = head;
head‐>left = head;
H
Kondisi isi:
Record‐ : head‐>right
Record head tidak berisi data
void insert_tengah(void)
{
struct simpul *p, *q;
p = (struct simpul *) malloc(sizeof(struct
strcpy(p->nama,nama);
if (head->right) != head) {
q = head-> right;
while (q->nama < nama) {
q = q->right;
}
p->right = q
p->left = q->left;
q->left->right = p;
q->left = p;
printf(“ \n sisip tengah”);
} else {
p->right = head;
p->left = heat;
head->right = p;
head->left = p;
printf(“ \n
create file”);
}
}
simpul);
Halaman 13
Modul Struktur Data
Circular Doubly Linked List
Kondisi kosong:
(ead ‐> right = head;
(ead ‐> left = head;
(ead
Kondisi isi:
Record‐ : head‐>right;
Record head tidak berisi data;
(ead
(ead
void insert_tengah(void)
{ struct simpul *p, *q;
p = (struct simpul *) malloc(sizeof(struct
strcpy(p->nama,nama);
if (head->right) != head){
q = head-> right;
while (q->nama < nama) {
q = q->right;
}
p->right = q
p->left = q->left;
q->left->right = p;
q->left = p;
printf(“sisip tengah”);
} else {
p->right = head;
p->left = heat;
head->right = p;
head->left = p;
printf(“create file”); }
}
simpul);
Halaman 14
Modul Struktur Data
STRUKTUR DATA NON‐L)N)ER
Terdiri dari :
Struktur Pohon
Graph
STRUKTUR PO(ON
Definisi dari pohon adalah:
Susunan dari satu atau lebih simpul node yang terdiri dari satu simpul sebagai
akar root dan sisanya membentuk subtree dari akar.
Gambar pohon secara umum adalah sebagai berikut:
Level
A
B
C
C
J
F
D
K
G
(
)
L
Level
Level
Level
Akar dari pohon ini adalah A
Satu simpul berisi:
data atau info
alamat simpul yang dihubungkan dengan link
Jumlah subtree dari satu simpul disebut derajat degree
A berderajat
B ,,
D ,,
Struktur pohon yang terkenal adalah struktur pohon Biner, dimana setiap simpul
maksimum derajatnya adalah .
Halaman 15
Modul Struktur Data
A
B
D
C
E
G
F
(
)
Proses dalam struktur data akan mudah digambarkan bila diketahui:
n = jumlah simpul
k = derajat pohon
maka :
Jumlah link = n . k
Jumlah null‐link = n k‐ +
Jumlah non‐zero link = n‐
Dari pohon biner diatas terlihat :
n =
k =
maka :
jumlah link = . =
jumlah null‐link = . – + =
jumlah non‐zero link = – =
Penelusuran Pohon Biner
Adalah suatu ide untuk melakukan penelusuran traversing atau kunjungan
visiting masing‐masing simpul sebanyak kali.
Penelusuran ini akan menghasilkan urutan linier dari informasi
Ada cara penelusuran, yaitu:
inorder
preorder
postorder
Penelusuran inorder:
Telusuri subtree kiri dalam inorder
Proses simpul akar
Telusuri subtree kanan dalam inorder
Halaman 16
Modul Struktur Data
+
*
/
D
**
A
B
E
C
(asil penelusuran dari pohon di atas adalah :
A / B ** C * D + E
Penelusuran Preorder:
Proses simpul akar
Telusuri subtree kiri dalam Preorder
Telusuri subtree kanan dalam
Preorder
Lihat gambar di atas maka hasil penelusuran Preorder adalah:
+ * / A ** B C D E
Penelusuran Postoeder:
Telusuri subtree kiri dalam postorder
Telusuri subtree kanan dalam postoeder
Proses simpul akar
(asil penelusuran dari pohon di atas adalah:
A B C ** / D * E +
Halaman 17
STRUKTUR DATA
Pertemuan s.d
Sasaran:
Meningkatkan:
pemahaman pengetahuan tentang teori dasar struktur data dan penanganan
data
serta pembuatan algoritma dan penggunaan strukturd dalam pemrograman
Materi :
. Konsep dan Definisi
- Tipe dan definisi
- Operasi Data
. Stack dan Queue
- Operasi dan aplikasi Stack
- Operasi dan aplikasi Queue dan Deque
. Linked List
- Konsep pointer dari Linked List
- Operasi pointer dari Linked List
- Jenis Linked List Single dan Double
. Tree dan Graph
- Terminologi, karakteristik dan struktur hirarkhi Tree
- Terminologi, Representasi dan Traversal dari Graph
Halaman 1
Modull Struktur Datta
Konsep dan Definisi
Definiisi Data
Adalah
h fakta ataau kenyataaan tercataat mengen
nai suatu o
obyek
Pengeertian dataa ini men
nyiratkan suatu nillai bisa daalam benttuk konsttanta atau
u
variab
bel
Tipe D
Data
Tipe Daata
Sedeerhana
Reaal
Terstrukttur
Ordinal
String
Flat
)ntegerr
Record
Double
Characteer
array
Boolean
n
File
Set
Tipe daata sederhaana:
Hanya dimungkinnkan untukk menyimpan satu nilaai dalam saatu variabeel
m
yaaitu:
Ada 5 macam,
1. bilaangan bulatt (integer)
2. bilaangan real presisi
p
tungggal
bilaangan real presisi
p
gannda
3. karaakter
4. tak bertipe (unnsign)
5. booolean (operrator logik))
Halaman 2
Modul Struktur Data
Tipe data terstrukrur
Adalah tipe data dimana satu variabel dapat menyimpan lebih dari satu nilai data
Masing‐masing nilai data disebut komponen.
Ada macam, yaitu:
. Data String
Data yang berisi sederetan karakter dimana banyaknya karakter bisa berubah‐
ubah sesuai kebutuhan
Bentuk umum : char nama variabel[ukuran]
Contoh : char nama[ ]
. Larik array
dimana variabel larik hanya bisa menyimpan tipe data saja
Bentuk umum : Tipe data namavariabel[ukuran]
Contoh : float X[ ]
int datax[ ]
. Record
terdiri dari beeberapa variabel dimana masing‐masing variabel bisa
mempunyai tipe yang berbeda
Bentuk umum :
struct nama_tipe_struct
{
tipe field‐ ;
tipe field‐ ;
...................
tipe field‐n;
} var_ struct
Contoh :
struct data_tanggal
{
int tanggal;
int bulan;
int tahun;
}
struct data_mhs
{
char nama[ ];
struct data_tanggal;
} info_mhs;
Halaman 3
Modul Struktur Data
nama_mhs
tanggal
info_mhs
data_tanggal
bulan
tahun
. Set himpunan
Memungkinkan suatu lokasi memori ditempati oleh satu atau lebih variabel
yang tipenya bisa berlainan.
1. union
Bentuk umum:
Union nama_union;
Contoh:
union
{
unsigned int data_int;
unsigned char data_char[ ];
} bil_x;
2. enumerius
merupakan himpunan dari konstanta integer yang diberi nama
Bentuk umum:
enum nama_enum
{
konstanta_ , jonstanta_ ;
konstanta_n;
} var_ , var_ ;
Contoh:
enum manusia { pria, wanita };
enum manusia jenis_kelamin;
Bila jenis_kelamin diisi pria maka nilai jenis kelamin= dan sebaliknya
bila diisi wanita nilai jenis_kelamin=
Halaman 4
Modull Struktur Datta
5. Fille
Filee merupak
kan organ
nisasi darii sejumlah
h record seejenis. Maasing‐masiing record
d
terrdiri dari ssatu atau leebih field d
dan field terdiri darii satu atau
u lebih karrakter.
File
e
Re
ecord
Field
Charr
Record
Field
C
Char
Tipe d
data Pointter
Variabel pointerr berisi alaamat dari suatu obyek lain yaaitu obyek
k yang ditu
unjuk oleh
h
pointerr tersebutt
Bentuk
k umum:
tipe *nama
a_ponter
Contoh
h:
in
nt *pa;
paa = &x; & berartii alamat
Artinya poin
nter pa meenunjuk allamat x
Algoritm
ma dan Pem
mrogram
man
Perm
masalahan
nnya adalaah bagaim
mana suatu
u masalah
h dapat d
diselesaikaan dengan
n
algo
oritma yan
ng tepat.
Dasaar‐dasar A
Algoritma:
elementerr; dan
Statement
S
Statement
S
kontrol
Stateement elementer terdiri dari:
Asignment
A
t X= , X=Y
Y
Compariso
C
n
Arithmatic
A
c Statemen
nt
Halaman 5
Modul Struktur Data
Statement kontrol terdiri dari:
Alternatif
Pengulangan
Percabangan
Statement elementer:
a. assignment
Untuk memberikan nilai ke variabel yang telah diseklarasikan. Bentuk
pernyataannya adalah
Contoh: total =
;
b. comparison
Untuk keperluan pengambilan keputusan diperlukan operator relasi seperti
> , 0)
{
x = s[top];
pritf (“\n\r x = %d top = %d”, x, top);
top = top – 1;
Halaman 7
Modul Struktur Data
}
else { printf(“\n\r
stack
kosong”); }
}
Soal: buat fungsi PUS(
Aplikasi stack antara lain :
. Dalam sistem operasi, pada saat aktivitas call dan return
. Pada proses kompilasi, untuk melakukan pengecekan kelengkapan pasangan
tanda kurung, kurung kotak, dll.
QUEUE antrian
Prinsip: F)FO First In First Out
atau
FCFS First Come First Serve
Ada macam pointer, yaitu: F Front dan R Rear
Untuk pengambilan data menggunakan pointer F sedang untuk pemasukkan data
menggunakan pointer R
Bila kondisi kosong F= dan R= sedang kondisi penuh R=N maka syarat
antrian adalah:
F link = first;
first = p;
printf(“\n sisip awal”);
}
else
{
p->link = NULL;
first = p;
printf(“\n create file”);
}
}
void insert_tengah(void)
{
struct
simpul *p , *q, *k;
p = (struct simpul *) malloc(sizeof(struct simpul));
strcpy(p->nama, nama);
if (first != NULL)
{
q = first;
while (q-> nama < nama)
{
k = q;
q = q->link;
}
p->link = q;
Halaman 11
Modul Struktur Data
k->link = p;
printf(“\n sisip
tengah “);
}
else
{
insert_awal()}
}
}
void delete_awal(void)
{
struct simpul *p;
if (first != NULL)
{
p = first;
first = first->link;
p->link = NULL;
strcpy(nama,p->nama);
free(p);
printf(“\n nama = % s”,nana);
}
else
{
printf(“\n list kosong“);
}
}
void delete_akhir(void)
{
struct simpul *p, *q;
if (first !=NULL)
{
p = first;
While (p->link != NULL)
{
q = p;
p = p->link;}
q->link = NULL;
strcpy(nama, q->nama);
printf(“\n
nama =5s “, nama);
free(p);
}
}
}
Halaman 12
Modul Struktur Data
Circular Doubly Linked List
Kondisi kosong :
head‐>right = head;
head‐>left = head;
H
Kondisi isi:
Record‐ : head‐>right
Record head tidak berisi data
void insert_tengah(void)
{
struct simpul *p, *q;
p = (struct simpul *) malloc(sizeof(struct
strcpy(p->nama,nama);
if (head->right) != head) {
q = head-> right;
while (q->nama < nama) {
q = q->right;
}
p->right = q
p->left = q->left;
q->left->right = p;
q->left = p;
printf(“ \n sisip tengah”);
} else {
p->right = head;
p->left = heat;
head->right = p;
head->left = p;
printf(“ \n
create file”);
}
}
simpul);
Halaman 13
Modul Struktur Data
Circular Doubly Linked List
Kondisi kosong:
(ead ‐> right = head;
(ead ‐> left = head;
(ead
Kondisi isi:
Record‐ : head‐>right;
Record head tidak berisi data;
(ead
(ead
void insert_tengah(void)
{ struct simpul *p, *q;
p = (struct simpul *) malloc(sizeof(struct
strcpy(p->nama,nama);
if (head->right) != head){
q = head-> right;
while (q->nama < nama) {
q = q->right;
}
p->right = q
p->left = q->left;
q->left->right = p;
q->left = p;
printf(“sisip tengah”);
} else {
p->right = head;
p->left = heat;
head->right = p;
head->left = p;
printf(“create file”); }
}
simpul);
Halaman 14
Modul Struktur Data
STRUKTUR DATA NON‐L)N)ER
Terdiri dari :
Struktur Pohon
Graph
STRUKTUR PO(ON
Definisi dari pohon adalah:
Susunan dari satu atau lebih simpul node yang terdiri dari satu simpul sebagai
akar root dan sisanya membentuk subtree dari akar.
Gambar pohon secara umum adalah sebagai berikut:
Level
A
B
C
C
J
F
D
K
G
(
)
L
Level
Level
Level
Akar dari pohon ini adalah A
Satu simpul berisi:
data atau info
alamat simpul yang dihubungkan dengan link
Jumlah subtree dari satu simpul disebut derajat degree
A berderajat
B ,,
D ,,
Struktur pohon yang terkenal adalah struktur pohon Biner, dimana setiap simpul
maksimum derajatnya adalah .
Halaman 15
Modul Struktur Data
A
B
D
C
E
G
F
(
)
Proses dalam struktur data akan mudah digambarkan bila diketahui:
n = jumlah simpul
k = derajat pohon
maka :
Jumlah link = n . k
Jumlah null‐link = n k‐ +
Jumlah non‐zero link = n‐
Dari pohon biner diatas terlihat :
n =
k =
maka :
jumlah link = . =
jumlah null‐link = . – + =
jumlah non‐zero link = – =
Penelusuran Pohon Biner
Adalah suatu ide untuk melakukan penelusuran traversing atau kunjungan
visiting masing‐masing simpul sebanyak kali.
Penelusuran ini akan menghasilkan urutan linier dari informasi
Ada cara penelusuran, yaitu:
inorder
preorder
postorder
Penelusuran inorder:
Telusuri subtree kiri dalam inorder
Proses simpul akar
Telusuri subtree kanan dalam inorder
Halaman 16
Modul Struktur Data
+
*
/
D
**
A
B
E
C
(asil penelusuran dari pohon di atas adalah :
A / B ** C * D + E
Penelusuran Preorder:
Proses simpul akar
Telusuri subtree kiri dalam Preorder
Telusuri subtree kanan dalam
Preorder
Lihat gambar di atas maka hasil penelusuran Preorder adalah:
+ * / A ** B C D E
Penelusuran Postoeder:
Telusuri subtree kiri dalam postorder
Telusuri subtree kanan dalam postoeder
Proses simpul akar
(asil penelusuran dari pohon di atas adalah:
A B C ** / D * E +
Halaman 17