• Tidak ada hasil yang ditemukan

Modul Struktur Data Halaman 1 (1)

N/A
N/A
Protected

Academic year: 2018

Membagikan "Modul Struktur Data Halaman 1 (1)"

Copied!
17
0
0

Teks penuh

(1)

Halaman  1 

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 

(2)

Konsep 

Tipe da Hanya

ertian  data bel 

Data 

ata sederha dimungkin

macam, ya angan bulat angan real p angan real p

akter

bertipe (un

olean (oper

Rea

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

lai  bisa  da

ai dalam sa

ata

r

er

n

obyek 

alam  bent

atu variabe

Terstrukt

Halaman  

tuk  konst

tanta  atau

(3)

Halaman  3   

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     nama­variabel[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  {  

(4)

Halaman  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[ ];                 }  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=  

     

info_mhs 

nama_mhs 

data_tanggal

tanggal 

bulan 

(5)

5. Fil

e merupak

rdiri dari s

data Point

el pointer r tersebut

k umum:  pe   *nama

 

Asignment  Compariso

a_ponter 

&  berarti

nter pa me

mrogram

nnya  adala ng tepat. 

c  Statemen Char

nisasi dari ebih field d

amat dari 

i alamat

enunjuk al

man 

ah  bagaim

     dan field t

suatu oby

lamat  x 

mana  suatu

 

File

ecord

Char Fiel

record se

erdiri dari

ek lain  ya

u  masalah

e

d

Record 

ejenis. Ma i satu atau

aitu obyek

h  dapat  d

  

Halaman  

asing‐masi

ing record

rakter. 

unjuk oleh

an  dengan

d 

(6)

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  =   ;   

b. comparison 

Untuk  keperluan pengambilan keputusan diperlukan operator relasi seperti  > , <  dll. , operasi  aritmatik, operator Boolean

 

c. statement )/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   dimensi atau lebih.   

Aplikasi penggunaan array adalah : 

ƒ Stack    tumpukan  

ƒ Queue   antrian  

ƒ Dequeue   antrian   pintu  

 

Pada Stack berlaku konsep L)FO  Last In First Out

Pada Queue berlaku konsep F)FO  First In First Out , atau 

FCFS  First Come First Serve  

 

    Pemilihan ke   cara tersebut disesuaikan dengan permasalahan yang ada:   

STACK 

Adalah  suatu  list  yang  penambahan  insert   atau  penghapusan  deletion

elemennya dilakukan di satu ujung   Top    

Ada   kondisi pada stack,  yaitu :        Awal     Top  =    

(7)

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   

ƒ isikan data ke stack 

. pop:  mengeluarkan  delete  data dari  Stack 

  Langkah yang diperlukan  : 

ƒ cek apakah Top masih >    

ƒ Bila ya,  copy data ke suatu variabel 

ƒ kurangkan Top dengan           

  Algoritma  PUS(  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];

(8)

Halaman  8 

}

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  <= R 

Proses yang dapat dilakukan  adalah: 

. )NSERT,  untuk memasukkan ke antrian; 

. 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 +    - X = Q[F]  - )f  f=N  

{ F=  ; R=   } 

(9)

Halaman  9 

STRUKTUR  DATA 

Pertemuan   s.d   

           

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   *  sizeof  char ;  free ptr ; 

 

Ada   bagian pada setiap record Linked List, yaitu: 

ƒ bagian data atau info; dan 

ƒ bagian alamat record next 

 

Ada   macam proses yaitu: 

ƒ Linier Singly Linked List 

 

ƒ Linier Doubly Linked List

 

 (  Record

 ( 

 (

 (  Record

(10)

Halaman  10

     

ƒ Circular Singly Linked List 

   

   

ƒ Circular Doubly Linked  List 

   

   

LINIER  SINGLY LINKED LIST 

Ada   bagian utama dari record Linier Singly Linked List, yaitu: 

. bagianyang berisi data/info ; dan   . 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 

A  (  (EAD = B  ( 

A  ( 

B  ( 

B  (  B  ( 

A  (  A  ( 

F)RST 

C  (

B  ( C  ( 

A  ( B  (

N)L 

F)RST =   ( 

A  (   (  N)L 

(11)

Halaman  11

)nsert: 

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

(12)

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

} } }     

 

(13)

Halaman  13

Circular Doubly Linked List 

 

Kondisi kosong :  head‐>right = head;  head‐>left = head; 

  Kondisi isi: 

ƒ Record‐  :   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(“ \n sisip tengah”); } else {

p->right = head; p->left = heat; head->right = p;

head->left = p;

printf(“ \n create file”); }

}

   

(14)

Halaman  14 Circular Doubly Linked List 

 

Kondisi kosong: 

    (ead ‐> right = head;      (ead ‐> left = head; 

   

Kondisi isi: 

Record‐ :   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”); } }

(ead 

(ead

(15)

Halaman  15 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: 

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  . 

   

A

C

B  D

( )

G F

K J 

L

Level   

Level   

Level   

(16)

Halaman  16

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 

 

A

B  C

D E  F

(17)

Halaman  17

 

(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  + 

   

 

+

* E

/ D

A **

Gambar

Gambar pohon secara umum adalah sebagai berikut:  

Referensi

Dokumen terkait

Dalam mengevaluasi pentingnya variabel-variabel tersebut, manajemen harus mengetahui apakah variabel-variabel tersebut merupakan faktor strategis internal (strategic

( salesman ) serta biaya iklan dan promosi dapat membantu perusahaan khususnya yang bergerak dalam bidang distribusi motor ataupun distribusi lainnya yang memiliki biaya marketing

Untuk menguji hipotesis dimana metode analisis yang digunakan dalam penelitian kuantitatif ini adalah metode verifikatif, maka dilakukan analisis regresi

Dan dari hasil pemantuan kualitas udara ambien di Kabupaten dan Kota se Provinsi Jambi masih dibawah standar baku mutu yang telah ditetapkan Kata kunci: Pemantauan, Kualitas

Setelah subjek melepaskan tangisnya, subjek merasa perasaannya lebih tenang dan lega. Dan keluarga suaminya pun agak kurang memperlakukan mereka kurang baik. Banyak kali yang

Akibat yang terlihat pada individu yang mengalami luka bakar merupakan hasil Akibat yang terlihat pada individu yang mengalami luka bakar merupakan hasil dari penyebab efek panas

Kolase merupakan salah satu latihan motorik halus dengan menempel sesuatu benda pada sebuah gambar ( dalam hal ini yang dipakai dalam penelitian ini adalah dengan kepingan

Baja amutit ukuran penampang 17 mm x 17 mm dengan panjang ± 120 mm dibentuk menggunakan mesin potong, mesin milling dan mesin surface grinding menjadi menjadi balok