Anda di halaman 1dari 17

ModulStrukturData

STRUKTURDATA
Pertemuan1s.d8



Sasaran:

Meningkatkan:
pemahaman pengetahuan tentang teori dasar struktur data dan penanganan
data
sertapembuatanalgoritmadanpenggunaanstrukturddalampemrograman

Materi:
1. KonsepdanDefinisi
- Tipedandefinisi
- OperasiData
2. StackdanQueue
- OperasidanaplikasiStack
- OperasidanaplikasiQueuedanDeque
3. LinkedList
- KonseppointerdariLinkedList
- OperasipointerdariLinkedList
- JenisLinkedListSingledanDouble
4. TreedanGraph
- Terminologi,karakteristikdanstrukturhirarkhiTree
- Terminologi,RepresentasidanTraversaldariGraph

Halaman1
ModullStrukturDatta

KonsepdanDefinisi
DefiniisiData
Adalahhfaktaataaukenyataaantercataatmengen naisuatuo obyek

Pengeertian dataa ini men
nyiratkan suatu nillai bisa daalam benttuk konsttanta atau
u
variab
bel

TipeD
Data

TipeDaata

Sedeerhana Terstrukttur

Reaal Ordinal String

Flat Integerr Record

Double Characteer array

Boolean
n File

Set

Tipe daata sederhaana:


Hanya dimungkinnkan untukk menyimpan satu nilaai dalam saatu variabeel

Ada 5 macam,
m yaaitu:
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))

Halaman2
ModulStrukturData

Tipedataterstrukrur
Adalahtipedatadimanasatuvariabeldapatmenyimpanlebihdarisatunilaidata
Masingmasingnilaidatadisebutkomponen.

Ada5macam,yaitu:
1. DataString
Datayangberisisederetankarakterdimanabanyaknyakarakterbisaberubah
ubahsesuaikebutuhan
Bentukumum: charnamavariabel[ukuran]
Contoh: charnama[30]

2. Larik(array)
dimanavariabellarikhanyabisamenyimpan1tipedatasaja
Bentukumum:Tipedatanamavariabel[ukuran]
Contoh: floatX[5]
intdatax[10]
3. Record
terdiri dari beeberapa variabel dimana masingmasing variabel bisa
mempunyaitipeyangberbeda
Bentukumum:
structnama_tipe_struct
{
tipefield1;
tipefield2;
...................
tipefieldn;
}var_struct

Contoh:
structdata_tanggal
{
inttanggal;
intbulan;
inttahun;
}
structdata_mhs
{
charnama[25];
structdata_tanggal;
} info_mhs;

Halaman3
ModulStrukturData

nama_mhs

tanggal
info_mhs

data_tanggal bulan

tahun


4. Set(himpunan)
Memungkinkan suatu lokasi memori ditempati oleh satu atau lebih variabel
yangtipenyabisaberlainan.

1. union
Bentukumum:
Unionnama_union;

Contoh:
union
{
unsignedintdata_int;
unsignedchardata_char[20];
}bil_x;

2. enumerius
merupakanhimpunandarikonstantaintegeryangdiberinama
Bentukumum:
enumnama_enum
{
konstanta_1,jonstanta_2;
konstanta_n;
}var_1,var_2;

Contoh:
enummanusia{pria,wanita};
enummanusiajenis_kelamin;

Bilajenis_kelamindiisipriamakanilaijeniskelamin=0dansebaliknya
biladiisiwanitanilaijenis_kelamin=1


Halaman4
ModullStrukturDatta

5. Fille
Filee merupak kan organ
nisasi darii sejumlahh record seejenis. Maasingmasiing record
d
terrdiridarissatuatauleebihfieldd
danfieldterdiridariisatuatau ulebihkarrakter.

File
e

Re
ecord Record

Field Field

Charr C
Char

Tiped
dataPointter
Variabelpointerrberisialaamatdarisuatuobyeklain(yaaituobyek
kyangditu
unjukoleh
h
pointerrtersebutt)

Bentukkumum:
tipe*nama a_ponter

Contohh:
in
nt*pa;
paa=&x;(&berartiialamat)

Artinyapoin nterpameenunjukallamatx

Algoritm
madanPem
mrogram
man
Permmasalahannnya adalaah bagaim
mana suatu
u masalah
h dapat d
diselesaikaan dengan
n
algooritmayan
ngtepat.

DasaardasarA
Algoritma:
Statement
S elementerr;dan
Statement
S kontrol

Stateementelementerterdiridari:
Asignment
A t (X=5,X=YY)
Compariso
C n
Arithmatic
A cStatemennt

Halaman5
ModulStrukturData

Statementkontrolterdiridari:
Alternatif
Pengulangan
Percabangan

Statementelementer:
a. assignment
Untuk memberikan nilai ke variabel yang telah diseklarasikan. Bentuk
pernyataannyaadalah
Contoh:total=100;

b. comparison
Untukkeperluanpengambilankeputusandiperlukanoperatorrelasiseperti
>,<dll.,operasiaritmatik,operatorBoolean.

c. statementI/O
Untukmemasukkannilaikekomputermenggunakan:scanf(),getch()
Untukmengeluarkannilaimenggunakan:printf(),puts()

STACKDANQUEUE

Stack(tumpukan)danQueue(antrian)merupakanalokasimemorydalambentuk
array1dimensiataulebih.

Aplikasipenggunaanarrayadalah:
Stack(tumpukan)
Queue(antrian)
Dequeue(antrian2pintu)

PadaStackberlakukonsepLIFO(LastInFirstOut),
PadaQueueberlakukonsepFIFO(FirstInFirstOut),atau
FCFS(FirstComeFirstServe)

Pemilihanke3caratersebutdisesuaikandenganpermasalahanyangada:

STACK
Adalah suatu list yang penambahan (insert) atau penghapusan (deletion),
elemennyadilakukandisatuujung(Top)

Ada3kondisipadastack,yaitu:
Awal Top =0
Kosong Top=0
Penuh Top = N

Halaman6
ModulStrukturData

Prosesyangdapatdilakukanpadastackadalah:
1. push:untukmemasukkandatakedalamStack
Langkahyangdiperlukan
cekapakahTop<N
bilaya,tambahkantopdengan1
isikandatakestack
2. pop:mengeluarkan(delete)datadariStack
Langkahyangdiperlukan:
cekapakahTopmasih>0
Bilaya,copydatakesuatuvariabel
kurangkanTopdengan1

AlgoritmaPUSHdanPOP
#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 (\n\r x = %d top = %d, x, top);
top = top 1;

Halaman7
ModulStrukturData

}
else { printf(\n\r stack kosong); }
}

Soal:buatfungsiPUSH

Aplikasistackantaralain:
1. Dalamsistemoperasi,padasaataktivitascalldanreturn
2. Pada proses kompilasi, untuk melakukan pengecekan kelengkapan pasangan
tandakurung,kurungkotak,dll.

QUEUE(antrian)
Prinsip: FIFO(FirstInFirstOut)
atau
FCFS(FirstComeFirstServe)

Ada2macampointer,yaitu:F(Front)danR(Rear)
UntukpengambilandatamenggunakanpointerFsedanguntukpemasukkandata
menggunakanpointerR
Bila kondisi kosong F=0 dan R=0 sedang kondisi penuh R=N maka syarat
antrianadalah:
F<=R
Prosesyangdapatdilakukanadalah:
1. INSERT,untukmemasukkankeantrian;
2. DELETE,untukmengeluarkandatadariantrian.

KondisiyangperludiperhatikanadalahkondisipenuhtapikosongyaituF=R=N
Subroutineinsert:
void insert(void)
{
if ( R< N )
{
R = R+ 1;
Q[R] = x;
printf( R = %d x = %d , R, x);
}
else
printf(antrian penuh);
}

Soal:buatprosedurDELETE
- CekF<R
- F=F+1
- X=Q[F]
- If(f=N)
{F=0;R=0}

Halaman8
ModulStrukturData

STRUKTURDATA
Pertemuan9s.d18

LinkedList
Pengelolaan memori secara dinamis artinya tidak perlu mengalokasikan memori
lebihawalsecarafixed.

Pengelolaanmemorisecaradinamisdapatdilakukan:
alokasimemori;dan
dealokasimemori

Alokasimemori:
void*malloc(jumlahbyte)
Dealokasimemori:
voidfree(void*nama_pointer)

contoh:
char*ptr;
ptr=(char*)malloc(500*sizeof(char));
free(ptr);

Ada2bagianpadasetiaprecordLinkedList,yaitu:
bagiandataatauinfo;dan
bagianalamatrecordnext

Ada4macamprosesyaitu:
LinierSinglyLinkedList

1000H Record1
Record2
2100H
2100H
1000H
2100H


Linier Doubly Linked List

Halaman9
ModulStrukturData

FIRST=1100H

NIL A100H 1100H NIL

1100H A100H


CircularSinglyLinkedList

FIRST

A100H B100H C100H

C100H A100H B100H



CircularDoublyLinkedList

HEAD=B100H

A100H A100H B100H B100H

B100H A100H

LINIERSINGLYLINKEDLIST

Ada2bagianutamadarirecordLinierSinglyLinkedList,yaitu:
1. bagianyangberisidata/info;dan
2. bagianyangberusurecordnext

Deklarasirecordbaru:
structsimpul*p;
p=(structsimpul*)malloc(sizeofsimpul));

Prosesyangdapatdilakukanadalah:
insertrecordbaru
deleterecord

Halaman10
ModulStrukturData

Insert:
- awal
- tengah
- akhir

Delete:
- awal
- tengah
- akhir

formatrecord:
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;

Halaman11
ModulStrukturData

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);
}
}
}

Halaman12
ModulStrukturData

CircularDoublyLinkedList

Kondisikosong:
head>right=head;
head>left=head;
H


Kondisiisi:
Record1:head>right
Recordheadtidakberisidata



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( \n sisip tengah);
} else {
p->right = head;
p->left = heat;
head->right = p;
head->left = p;
printf( \n create file);
}
}

Halaman13
ModulStrukturData

CircularDoublyLinkedList

Kondisikosong:
Head>right=head;
Head>left=head;
Head



Kondisiisi:
Record1:head>right;
Recordheadtidakberisidata;

Head

Head

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); }
}

Halaman14
ModulStrukturData

STRUKTURDATANONLINIER

Terdiridari:
StrukturPohon
Graph

STRUKTURPOHON

Definisidaripohonadalah:
Susunandarisatuataulebihsimpul(node)yangterdiridarisatusimpulsebagai
akar(root)dansisanyamembentuksubtreedariakar.

Gambarpohonsecaraumumadalahsebagaiberikut:

A Level1

B C D Level2

C F G H I Level3

J K
L Level4

AkardaripohoniniadalahA
Satusimpulberisi:
dataatauinfo
alamatsimpulyangdihubungkandenganlink

Jumlahsubtreedarisatusimpuldisebutderajat(degree)
Aberderajat3
B,,1
D,,3

Struktur pohon yang terkenal adalah struktur pohon Biner, dimana setiap simpul
maksimumderajatnyaadalah2.

Halaman15
ModulStrukturData

B C

D E F

G H I

Prosesdalamstrukturdataakanmudahdigambarkanbiladiketahui:
n=jumlahsimpul
k=derajatpohon
maka:
Jumlahlink=n.k
Jumlahnulllink=n(k1)+1
Jumlahnonzerolink=n1

Daripohonbinerdiatasterlihat:
n=9
k=2
maka:
jumlahlink=9.2=18
jumlahnulllink=9.(21)+1=10
jumlahnonzerolink=91=8


PenelusuranPohonBiner

Adalah suatu ide untuk melakukan penelusuran (traversing) atau kunjungan
(visiting)masingmasingsimpulsebanyak1kali.
Penelusuraniniakanmenghasilkanurutanlinierdariinformasi

Ada3carapenelusuran,yaitu:
inorder
preorder
postorder

Penelusuraninorder:
Telusurisubtreekiridalaminorder
Prosessimpulakar
Telusurisubtreekanandalaminorder

Halaman16
ModulStrukturData

* E

/ D

A **

B C


Hasilpenelusurandaripohondiatasadalah:
A/B**C*D+E

PenelusuranPreorder:
Prosessimpulakar
TelusurisubtreekiridalamPreorder
Telusurisubtreekanandalam
Preorder

LihatgambardiatasmakahasilpenelusuranPreorderadalah:
+*/A**BCDE

PenelusuranPostoeder:
Telusurisubtreekiridalampostorder
Telusurisubtreekanandalampostoeder
Prosessimpulakar

Hasilpenelusurandaripohondiatasadalah:
ABC**/D*E+

Halaman17

Anda mungkin juga menyukai