• Tidak ada hasil yang ditemukan

STRUKTUR DATA Pertemuan 1 s.d 8

N/A
N/A
Protected

Academic year: 2021

Membagikan "STRUKTUR DATA Pertemuan 1 s.d 8"

Copied!
17
0
0

Teks penuh

(1)

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)

Konsep 

Defini Adalah   Penge variab

 

Tipe D

Tipe da Hanya Ada 5 m 1. bila 2. bila bila 3. kara 4. tak 5. boo  

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

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 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 5  macam,  yaitu:  1. Data String  Data  yang berisi sederetan karakter dimana banyaknya karakter bisa berubah‐ ubah sesuai kebutuhan 

Bentuk umum  :         char nama­ variabel[ukuran] 

Contoh :             char nama[30]   

2. Larik (array

dimana variabel larik hanya bisa menyimpan 1tipe data saja  Bentuk umum :  Tipe data     nama­variabel[ukuran]       Contoh  :            float X[5] 

               int    datax[10]  3. Record 

terdiri  dari  beeberapa  variabel  dimana  masing‐masing  variabel  bisa  mempunyai tipe yang berbeda  Bentuk umum  :    struct   nama_tipe_struct         {  tipe  field‐1;          tipe   field‐2;         ...         tipe  field‐n;         } var_ struct    Contoh :  struct  data_tanggal  {  int  tanggal;        int  bulan;         int  tahun;  }  struct   data_mhs  {   char  nama[25];         struct  data_tanggal;   }  info_mhs;

(4)

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 

(5)

5. Fil File ter   Tipe d Variab pointer   Bentuk ti Contoh in pa Ar     Algoritm Perm algo Dasa ƒ S ƒ S State ƒ A ƒ C ƒ A     le  e  merupak rdiri dari s data Point el pointer r tersebut k umum:  pe   *nama   h:  nt   *pa;  a  = &x;  (    tinya  poin ma dan Pem masalahan oritma yan   ar‐dasar A Statement  Statement    ement ele Asignment  Compariso Arithmatic kan  organ satu atau le ter  r berisi  ala t)  a_ponter  ‘&’ berarti nter pa me mrogram nnya  adala ng tepat.  Algoritma:  elementer kontrol  menter te t(X=5, X=Y c  Statemen Char nisasi  dari ebih field d amat dari  i alamat) enunjuk al man  ah  bagaim      r; dan  rdiri dari: Y)  nt  Re Field r C i  sejumlah dan field t suatu oby lamat  x  mana  suatu   File ecord Char Fielrecord  se erdiri dari ek lain (ya u  masalah e d Record  ejenis.  Ma i satu atau aitu obyek h  dapat  d    Halaman   asing‐masi u lebih kar

k yang ditu diselesaika ing record rakter. 

unjuk oleh an  dengan d 

h  n 

(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  =  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)

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

(8)

Halaman  8 

}

else { printf(“\n\r 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)

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)

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)

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

(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‐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(“ \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:      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 

(15)

Halaman  15 STRUKTUR DATA NON‐LINIER    Terdiri  dari :  ƒ Struktur  Pohon  ƒ Graph    STRUKTUR  POHON    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  3  ƒ B       ,,      1  ƒ D       ,,      3   

Struktur  pohon  yang  terkenal  adalah  struktur  pohon  Biner,  dimana  setiap  simpul  maksimum derajatnya adalah 2.      A C B  D H I G F C  K J  L Level 1  Level 2  Level 3  Level 4 

(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‐1) +1  ƒ Jumlah non‐zero link  = n‐1    Dari  pohon biner diatas  terlihat :  n = 9  k = 2  maka :      jumlah link = 9 . 2 = 18      jumlah null‐link =  9 . (2 – 1) +1  = 10      jumlah non‐zero link = 9 – 1 = 8     

Penelusuran  Pohon Biner 

 

Adalah  suatu  ide  untuk  melakukan  penelusuran  (traversing)  atau  kunjungan  (visiting)  masing‐masing simpul sebanyak 1 kali.  Penelusuran ini akan menghasilkan urutan linier dari informasi    Ada 3 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   Hasil 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    Hasil penelusuran dari pohon di atas adalah:  A  B  C  **  /  D  *  E  +        + * E / D A ** B C

Referensi

Dokumen terkait

Tiga doktrin dasar dari sistem filsafat wujud yang diaktualisir Mulla Sadra tersebut menjadi landasan utama mengapa pemikiran dan wacana tentang wujud yang diusungnya

Di dalam Solid Toolbar terdapat perintah standar solid yang merupakan objek gambar secara umum, objek ini terdiri dari balok, silinder,. kerucut, bola,

Surat Pemberitahuan Retribusi Daerah yang selanjutnya dapat disingkat SPTRD adalah surat yang digunakan oleh Wajib Retribusi untuk melaporkan objek retribusi dan wajib

Pemerintah dan Komisi XI DPR akhirnya sepakat untuk menurunkan asumsi pertumbuhan ekonomi tahun depan menjadi 5,2%-5,6%, jauh lebih rendah dibandingkan asumsi yang

Kalimat ini telah dikatakan sebelumnya dan memiliki makna bahwa masyarakat luas menganggap bahwa para artis yang populer adalah orang yang beruntung dan memiliki makna

Bila kita kaji bahwa campuran terites, misalnya air perasan kulit batang cingkam (Bischofia javanica) memiliki kandungan tanin cukup tinggi, merupakan satu masukkan

Langkah atau meja keempat Posyandu sekaligus adanya penyuluhan kesehatan, menjelaskan data KMS atau keadaan anak berdasarkan data kenaikan berat badan yang digambarkan

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