STRUKTUR DATA Pertemuan 1 s.d 8

dokumen-dokumen yang mirip
STRUKTUR DATA Pertemuan 1 s.d 8

MATERI PRAKTIKUM STRUKTUR DATA

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

Linked List 6.3 & 7.3 NESTED LOOP

Algoritma dan Struktur Data. Ramos Somya

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

Lab. Teknik Informatika Struktur Data 1

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

Tipe Data dan Operator

Algoritma Pemrograman & Struktur Data

ALGORITMA DAN STRUKTUR DATA

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

Buku Ajar Struktur Data

04. Single Linked List

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Achmad Solichin.

LIST. Dewi Sartika, M.Kom

Pertemuan 7. REVIEW dan QUIS

STRUKTUR DATA. Literatur

Pendahuluan Struktur Data. Nisa ul Hafidhoh

KONSEP POINTER DAN LINKED LIST

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen

05. Double Linked List

Algoritma dan Struktur Data. Linked List

Algoritma Dan Struktur Data II

Tree (Struktur Data) Nisa ul Hafidhoh, MT

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Review : Sifat Implementasi Linear List dengan Array

6. TREE / BINARY TREE

Struktur Data Array. Rijal Fadilah S.Si

SINGLE LINKED LIST (NON CIRCULAR)

Bab 4 Pointer dan Struktur Data Dinamik 16 BAB IV POINTER DAN STRUKTUR DATA DINAMIK TUJUAN PRAKTIKUM TEORI PENUNJANG

Silabus Struktur Data. Bandung 2013

LAPORAN PRAKTIKUM RESMI QUEUE

Pertemuan 3. Perubah Dinamis (Dinamic variable) Suatu perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi.

Mata Kuliah : Struktur Data Semester : Genap Kode Mata Kuliah : 307 Waktu : 180 Menit Bobot : 4 sks. Jurusan : MI

Single Linked List (1)

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

QUEUE (ANTREAN) Operasi Antrean : FIFO (First In First Out) Elemen yang pertama masuk merupakan elemen yang pertama keluar.

Algoritma Pemrograman & Struktur Data

Algoritma dan Struktur Data. Pertemuan 7 Linked List

MODUL PRAKTIKUM STRUKTUR DATA. Dosen Pengampu M.Bahrul Ulum, S.Kom., M.Kom. Asisten Lab Mia Kastina PROGRAM STUDI TEKNIK INFORMATIKA

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

KONSEP POINTER DAN LINKED LIST

Struktur Data. Pertemuan 2

Modul Praktikum Algoritma dan Struktur Data

Penerapan BFS dan DFS dalam Garbage Collection

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.

Struktur Data & Algoritma

(3) BAHAN KAJIAN (materi ajar)

STACK DAN QUEUE. Pengertian Stack Dan Queue. stack & queue. Last saved by KENKEINA Created by KENKEINA

MODUL IV STACK A. TUJUAN

VARIABEL, TIPE DATA DAN EKSPRESI Bab 2

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

BAB VII Tujuan 7.1 Deskripsi dari Binary Tree

*Sekumpulan elemen yang diatur secara terurut. *Linear List tidak sama dengan Connected-List

BAB II STACK Atau TUMPUKAN

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

Pengenalan Algoritma & Struktur Data. Pertemuan ke-1

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

BAB 3 STACK (TUMPUKAN)

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

Algoritma Pemrograman & Struktur Data

MODUL 6 SINGLE & DOUBLE LINKED LIST

MODUL PRAKTIKUM STRUKTUR DATA

SENARAI BERANTAI (LINK LIST)

Pendahuluan Pemrograman Mikrokontroler

S T A C K ( T U M P U K A N )

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

Data structure :Metode LINK LIST. Kusnawi, S.Kom, M.Eng STMIK AMIKOM Yogyakarta

elemen Dasar Bahasa Pemrograman C

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

KONSEP POINTER DAN LINKED LIST

Chapter 1 KONSEP DASAR C

Tipe data dasar merupakan tipe data yang disediakan oleh kompailer, sehingga dapat langsung dipakai Dalam algoritma dan pemrograman yang termasuk dala

Pemrograman Algoritma Dan Struktur Data

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

Bahasa C-M6 By Jamilah, Skom 1

Algoritma dan Struktur Data. Ramos Somya

BAB IX LINKED LIST (SENARAI BERANTAI)

Pohon Biner Bagian 2 (Pohon Seimbang, Pohon Biner Terurut, Pembangunan Pohon Biner dari Pita Karakter/String)

PRAKTIKUM 2. perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

BAB IX LINKED LIST (SENARAI BERANTAI)

BAB VIII QUEUE (ANTRIAN)

Data Structure STRUKTUR DATA QUEUE. Chapter 3. Dahlia Widhyaestoeti, S.Kom

Dasar-dasar Pemrograman C DASAR PEMROGRAMAN & ALGORITMA

Algoritma Dan Struktur Data II. Queue

Pohon Biner (Bagian 1)

Transkripsi:

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 Halaman 1

Modul Struktur Data Konsep dan Definisi Definisi Data Adalah fakta atau kenyataan tercatat mengenai suatu obyek Pengertian dataa ini menyiratkan variabel suatu nilai bisa dalam bentuk konstanta atau Tipe Data Tipe Data Sederhana Terstruktur Real Ordinal String Flat Integer Record Double Character array Boolean File Set Tipe data sederhana: Hanya dimungkinkan untuk menyimpan satu nilai dalam satu variabel Ada 5 macam, yaitu: 1. bilangan bulat (integer) 2. bilangan real presisi tunggal bilangan real presisi ganda 3. karakter 4. tak bertipe (unsign) 5. boolean (operator logik) Halaman 2

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 berubahubah 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; Halaman 3

nama_mhs info_mhs tanggal data_tanggal bulan tahun 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 Halaman 4

Modul Struktur Data 5. File File merupakan organisasi dari sejumlah record sejenis. Masing masing record terdiri dari satu atau lebih field dan field terdiri dari satu atau lebih karakter. File Record Record Field Field Char Char Tipe data Pointer Variabel pointer berisi alamat dari suatu obyek lain (yaitu obyek yang ditunjuk oleh pointer tersebut) Bentuk umum: tipe *nama_ponter Contoh: int *pa; pa = &x; ( & berarti alamat) Artinya pointer pa menunjuk alamat x Algoritma dan Pemrograman Permasalahannya adalah bagaimana suatuu masalah dapat diselesaikan dengann algoritma yang tepat. Dasar dasar Algoritma: Statement elementer; dan Statement kontrol Statement elementer terdiri dari: Asignment (X=5, X=Y) Comparison Arithmatic Statement Halaman 5

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 Halaman 6

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( ); case 2: pop(); getch(); break; case 3: exit(0); goto clrbaarloop; push(); getch(); break; void pop(void) If (top > 0) x = s[top]; pritf ( \n\r x = %d top = %d, x, top); top = top 1; Halaman 7

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 Halaman 8

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 1000 H Record1 1000 H 2100 H Record2 2100 H 2100 H Linier Doubly Linked List Halaman 9

FIRST = 1100 H NIL A100 H 1100 H NIL 1100 H A100 H Circular Singly Linked List FIRST A100 H B100 H C100 H C100 H A100 H B100 H Circular Doubly Linked List HEAD = B100 H A100 H A100 H B100 H B100 H B100 H A100 H 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 Halaman 10

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; Halaman 11

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

Circular Doubly Linked List Kondisi kosong : head >right = head; head >left = head; H 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 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

Circular Doubly Linked List Kondisi kosong: Head > right = head; Head > left = head; Head Kondisi isi: Record 1: head >right; Record head tidak berisi data; Head Head 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

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: A Level 1 B C D Level 2 C F G H I Level 3 J K L Level 4 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. Halaman 15

A B C D E F G H I 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 Halaman 16

+ * E / D A ** B C 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 + Halaman 17