Hub. 0813 3350 0792, Toko Pusat Distributor Mainan Mandi Bola Anak Bola Plast...
Materi sod
1. Modul Struktur Data
Halaman 1
STRUKTUR DATA
Pertemuan 1 s.d 8
Sasaran:
Meningkatkan:
pemahaman pengetahuan tentang teori dasar struktur data dan penanganan
data
serta pembuatan algoritma dan penggunaan strukturd dalam pemrograman
Materi :
1. Konsep dan Definisi
- Tipe dan definisi
- Operasi Data
2. Stack dan Queue
- Operasi dan aplikasi Stack
- Operasi dan aplikasi Queue dan Deque
3. Linked List
- Konsep pointer dari Linked List
- Operasi pointer dari Linked List
- Jenis Linked List Single dan Double
4. Tree dan Graph
- Terminologi, karakteristik dan struktur hirarkhi Tree
- Terminologi, Representasi dan Traversal dari Graph
2. Modul
Konsep
Defini
Adalah
Penge
variab
Tipe D
Tipe da
Hanya
Ada 5 m
1. bila
2. bila
bila
3. kara
4. tak
5. boo
l Struktur Dat
dan Defi
isi Data
h fakta ata
ertian data
bel
Data
ata sederha
dimungkin
macam, ya
angan bulat
angan real p
angan real p
akter
bertipe (un
olean (oper
Rea
ta
nisi
au kenyata
a ini men
ana:
nkan untuk
aitu:
t (integer)
presisi tung
presisi gan
nsign)
rator logik)
Sede
al
Flat
Double
aan tercata
nyiratkan
k menyimp
ggal
nda
)
erhana
at mengen
suatu nil
an satu nila
Tipe Da
Ordinal
Integer
Characte
Boolean
nai suatu o
lai bisa da
ai dalam sa
ata
r
er
n
obyek
alam bent
atu variabe
Terstrukt
Halaman
tuk konst
el
tur
String
Record
array
File
Set
2
tanta atauu
4. Modul Struktur Data
Halaman 4
4. 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[20];
} bil_x;
2. enumerius
merupakan himpunan dari konstanta integer yang diberi nama
Bentuk umum:
enum nama_enum
{
konstanta_1, jonstanta_2;
konstanta_n;
} var_1, var_2;
Contoh:
enum manusia { pria, wanita };
enum manusia jenis_kelamin;
Bila jenis_kelamin diisi pria maka nilai jenis kelamin=0 dan sebaliknya
bila diisi wanita nilai jenis_kelamin=1
info_mhs
nama_mhs
data_tanggal
tanggal
bulan
tahun
6. Modul Struktur Data
Halaman 6
Statement kontrol terdiri dari:
Alternatif
Pengulangan
Percabangan
Statement elementer:
a. assignment
Untuk memberikan nilai ke variabel yang telah diseklarasikan. Bentuk
pernyataannya adalah
Contoh: total = 100;
b. comparison
Untuk keperluan pengambilan keputusan diperlukan operator relasi seperti
> , < dll. , operasi aritmatik, operator Boolean.
c. statement I/O
Untuk memasukkan nilai ke komputer menggunakan: scanf(), getch()
Untuk mengeluarkan nilai menggunakan: printf(), puts()
STACK DAN QUEUE
Stack (tumpukan) dan Queue (antrian) merupakan alokasi memory dalam bentuk
array 1 dimensi atau lebih.
Aplikasi penggunaan array adalah :
Stack (tumpukan)
Queue (antrian)
Dequeue (antrian 2 pintu)
Pada Stack berlaku konsep LIFO (Last In First Out),
Pada Queue berlaku konsep FIFO (First In First Out), atau
FCFS (First Come First Serve)
Pemilihan ke 3 cara tersebut disesuaikan dengan permasalahan yang ada:
STACK
Adalah suatu list yang penambahan (insert) atau penghapusan (deletion),
elemennya dilakukan di satu ujung (Top)
Ada 3 kondisi pada stack, yaitu :
Awal Top = 0
Kosong Top = 0
Penuh Top = N
7. Modul Struktur Data
Halaman 7
Proses yang dapat dilakukan pada stack adalah :
1. push: untuk memasukkan data ke dalam Stack
Langkah yang diperlukan
cek apakah Top < N
bila ya, tambahkan top dengan 1
isikan data ke stack
2. pop: mengeluarkan (delete) data dari Stack
Langkah yang diperlukan :
cek apakah Top masih > 0
Bila ya, copy data ke suatu variabel
kurangkan Top dengan 1
Algoritma PUSH dan POP
#include <stdio.h>
void push(void);
void pop(void);
int x, top;
int s[5], N=5;
main()
{
char pilih;
clrBarloop;
{
clrscr();
gotoxy(25,7); puts(“coba stack”) ;
gotoxy(25,10); puts(“1. push”);
gotoxy(25,13); puts(“2. pop”);
gotoxy(25,16); puts(“3. exit”);
gotoxy(25,19); prinyf(“Pilih :”);
scanf(“ %x “, &pilih);
switch(pilih)
{
case 1: printf(“n masukkan data x =;
scanf(“ “); push(); getch(); break;
case 2: pop(); getch(); break;
case 3: exit(0);
}
goto clrBaarloop;
}
}
void pop(void)
{
If (top > 0)
{
x = s[top];
pritf (“nr x = %d top = %d”, x, top);
top = top – 1;
8. Modul Struktur Data
Halaman 8
}
else { printf(“nr stack kosong”); }
}
Soal: buat fungsi PUSH
Aplikasi stack antara lain :
1. Dalam sistem operasi, pada saat aktivitas call dan return
2. Pada proses kompilasi, untuk melakukan pengecekan kelengkapan pasangan
tanda kurung, kurung kotak, dll.
QUEUE (antrian)
Prinsip: FIFO (First In First Out)
atau
FCFS (First Come First Serve)
Ada 2 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=0 dan R=0 sedang kondisi penuh R=N maka syarat
antrian adalah:
F <= R
Proses yang dapat dilakukan adalah:
1. INSERT, untuk memasukkan ke antrian;
2. DELETE, untuk mengeluarkan data dari antrian.
Kondisi yang perlu diperhatikan adalah kondisi penuh tapi kosong yaitu F=R=N
Subroutine insert:
void insert(void)
{
if ( R< N )
{
R = R+ 1;
Q[R] = x;
printf(“ R = %d x = %d “, R, x);
}
else
printf(“antrian penuh”);
}
Soal: buat prosedur DELETE
- Cek F < R
- F = F + 1
- X = Q[F]
- If (f=N)
{ F=0 ; R= 0 }
9. Modul Struktur Data
Halaman 9
STRUKTUR DATA
Pertemuan 9 s.d 18
Linked List
Pengelolaan memori secara dinamis artinya tidak perlu mengalokasikan memori
lebih awal secara fixed.
Pengelolaan memori secara dinamis dapat dilakukan:
alokasi memori; dan
dealokasi memori
Alokasi memori:
void * malloc ( jumlah byte )
Dealokasi memori:
void free(void *nama_pointer)
contoh:
char *ptr;
ptr = (char *) malloc(500 * sizeof (char));
free(ptr);
Ada 2 bagian pada setiap record Linked List, yaitu:
bagian data atau info; dan
bagian alamat record next
Ada 4 macam proses yaitu:
Linier Singly Linked List
Linier Doubly Linked List
1000 H Record1
2100 H
1000 H
2100 H
Record2
2100 H
10. Modul Struktur Data
Halaman 10
Circular Singly Linked List
Circular Doubly Linked List
LINIER SINGLY LINKED LIST
Ada 2 bagian utama dari record Linier Singly Linked List, yaitu:
1. bagianyang berisi data/info ; dan
2. bagian yang berusu record next
Deklarasi record baru:
struct simpul *p;
p = (struct simpul *) malloc (sizeof simpul));
Proses yang dapat dilakukan adalah:
insert record baru
delete record
A100 H
HEAD = B100 H
A100 H
B100 H
B100 H B100 H
A100 H
A100 H
FIRST
C100 H
B100 H C100 H
A100 H B100 H
NIL
FIRST = 1100 H
A100 H 1100 H NIL
1100 H A100 H
11. Modul Struktur Data
Halaman 11
Insert:
- awal
- tengah
- akhir
Delete:
- awal
- tengah
- akhir
format record :
struct simpul {
char nama[20];
struct simpul *link;
}
void insert_awal(void)
{
struct simpul *p;
P = (struct simpul *) malloc(sizeof(struct simpul));
strcpy(p-> nama, nama); *strcpy=string Copy
if (first != NULL) * != tidak sama dgn
{
p->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;
12. Modul Struktur Data
Halaman 12
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);
}
}
}
14. Modul Struktur Data
Halaman 14
Circular Doubly Linked List
Kondisi kosong:
Head ‐> right = head;
Head ‐> left = head;
Kondisi isi:
Record‐1: head‐>right;
Record head tidak berisi data;
void insert_tengah(void)
{ struct simpul *p, *q;
p = (struct simpul *) malloc(sizeof(struct simpul);
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”); }
}
Head
Head
Head