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 : struck 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. enumerius 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
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 suatu masalah dapat diselesaikan dengan 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