Modul Struktur Data 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 Modull Struktur Datta Konsep dan Definisi Definiisi Data Adalah h fakta ataau kenyataaan tercataat mengen nai suatu o obyek Pengeertian dataa ini men nyiratkan suatu nillai bisa daalam benttuk konsttanta atau u variab bel Tipe D Data Tipe Daata Sedeerhana Reaal Terstrukttur Ordinal String Flat Integerr Record Double Characteer array Boolean n File Set Tipe daata sederhaana: Hanya dimungkinnkan untukk menyimpan satu nilaai dalam saatu variabeel m yaaitu: Ada 5 macam, 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)) Halaman 2 Modul Struktur Data 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 : struck data_tanggal { int tanggal; int bulan; int tahun; } struct data_mhs { char nama[25]; struct data_tanggal; } info_mhs; Halaman 3 Modul Struktur Data nama_mhs tanggal info_mhs 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 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 Field Char Record Field 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 Modul Struktur Data 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 Modul Struktur Data 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; Halaman 7 Modul Struktur Data } } 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