1
Disusun Oleh Kussigit Santosa
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
2
Jl. Surya Kencana No. 1 Pamulang Telp (021)7412566, Fax. (021)7412566 Tangerang Selatan – Selatan – Banten
PERTEMUAN I
STRUKTUR DATA Bobot : 4 SKS Prasyarat
: Sistim Digital PTI Algoritma dan Pemrograman
Perkuliahan: 24 kali pertemuan di kelas 2 kali Ujian (UTS dan UAS)
Penilaian
: Kehadiran Tugas UTS UAS
Struktur Data Struktur Data
: 10% : 20% : 30% : 40%
Universitas Pamulang
Teknik Informatika Teknik Informatika
3
Apa itu Struktur Data ?
PROGRAM
ALGORITMA
STRUKTUR DATA
ALGORITMA
Deskripsi langkah‐langkah penyelesaian masalah yang tersusun secara logis 1. Ditulis dengan notasi khusus 2. Notasi mudah dimengerti 3. Notasi dapat diterjemahkan menjadi sintaks suatu bahasa pemrograman CONTOH
1. 2. 3. 4. 5. 6. 7.
Mencari nilai maksimum Mengurutkan data Mencetak bilangan ganjil dari 1 – 19 Menyimpan data mahasiswa baru Mencetak data absensi Mengirim email berdasarkan jadual berdasarkan jadual…. …. DLL
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
4
Contoh Algoritma Mencetak Absensi 1. 2. 3. 4. 5. 6. 7.
Buka Data Absensi Tentukan Mata Kuliah Tentukan Kelas Tentukan Format Absensi (4 / 14 kolom) Tentukan banyak pencetakan Ambil data mhs ke‐1, lalu cetak Ulangi langkah ke‐6 sampai data habis
STRUKTUR DATA Model logika/matematik yang secara khusus mengorganisasi data •
•
Struktur Data Statis – array/larik , rekord, himpunan. Struktur Data Dinamis ‐ list/senarai, queue /antrian /giliran, tumpukan /stack /timbunan, pohon, graf.
DEFINISI DATA Data : Fakta atau kenyataan yang tercatat mengenai suatu obyek Pengertian data ini menyiratkan suatu nilai yang bisa dinyatakan dalam bentuk konstanta atau variabel Konstanta menyatakan nilai yang tetap Variabel digunakan dalam program untuk menyatakan nilai yang dapat diubah‐ubah selama eksekusi berlangsung EMPAT ISTILAH TENTANG DATA TIPE DATA : macam/isi data didalam suatu variabel OBYEK DATA : Himpunan dari elemen, misal : x himpunan bilangan integer REPRESENTASI DATA : Suatu mapping dari struktur data d kesuatu himpunan struktur data e, misal : boolean direpresentasikan dalam 0 dan 1 STRUKTUR DATA : koleksi dari variabel yang dinyatakan dengan sebuah nama, dengan sifat setiap variabel dapat memiliki tipe yang berlainan. Struktur data biasa dipakai untuk mengelompokkan beberapa informasi yang berkaitan menjadi sebuah kesatuan
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
5
HIRARKI TIPE DATA
REVIEW C/C++ PERINTAH OUTPUT Bentuk Umum : cout<<“Keterangan”<
#include
using namespace std; void main( ) { int BIL; BIL = 100; cout <<”Nilai Bilangan BIL adalah ………………. : “<< BIL<< endl; }
Out put ( Tampilan pada monitor )
Nilai Bilangan BIL adalah ………………. : 100
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
6
PERINTAH INPUT Bentuk Umum : cin>>variabel;
#include using namespace std; void main( ) { int BIL; cout <<”Masukkan Nilai Bilangan BIL ………………. : “<< endl; cin>>BIL; }
#include using namespace std; void main( ) { Char nama[20]; cout <<”Masukkan nama anda : “;cin>>nama ; cout<<”Nama saya adalah ……………: “<< nama<< endl;
Hasilnya : Masukkana nama anda : Gustav Stevani
Nama saya adalah …………… : Gustav Stevani
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
7
PERTEMUAN 2 ( DATA TERSTRUKTUR) TIPE DATA TERSTRUKTUR 1. String Data yang berisi sederetan karakter dimana banyaknya karakter bisa berubah‐ubah sesuai dengan kebutuhan
// contoh program #include using namespace std; void main( ) { int I ; char N[8] = “JAKARTA” ; for(i=0;i<=7 ; i ++) cout<<”N[ “<< i<<”]“<< “= “ << N[i]<< endl; }
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
8
2. Larik(Array) Array adalah variabel yang mampu menyimpan sejumlah nilai yang bertipe sama.
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
9
3. Record/Struktur Terdiri dari beberapa variabel yang terstruktur dan masing‐masing variabel bisa mempunyai tipe yang berbeda. struct mahasiswa { char *nama; char *nim; int uts,uas; float akhir; char grade; }
4. Set ‐> Union Berbeda dengan struktur, anggota dari union menggunakan secara bersama‐sama ruang penyimpanan memori yang sama. // contoh program #include using namespace std; union BilBulat { unsigned int bInt; unsigned char cKar[4]; }; void main(void) { BilBulat Bilangan; Bilangan.bInt=0x56782233; cout<<"bInt : "<
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
10
5. Set ‐> Enumerasi Merupakan himpunan dari konstanta integer yang diberi nama.
#include using namespace std;
6. File Merupakan organisasi dari sejumlah record sejenis. Masing‐masing record dapat terdiri dari satu atau beberapa field dan setiap field terdiri dari satu atau beberapa karakter
7. PROGRAM Kumpulan instruksi‐instruksi yang ditulis dengan aturan tertentu yang dimengerti oleh komputer untuk melaksanakan suatu tugas.
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
11
PERTEMUAN III ( Statemen elementer dan kendali) PROGRAM
Kumpulan instruksi-instruksi yang ditulis dengan aturan tertentu yang dimengerti oleh komputer untuk melaksanakan suatu tugas.
STATEMEN ELEMENTER 1. Assignment(penugasan) Untuk memberikan nilai ke variabel yang telah dideklarasikan Bil = 3; 2. Compariason Untuk keperluan pengambilan keputusan. Diperlukan operator relasi sebagai berikut : >, <, >=, <=, ==, != Contoh : A = 5 dan B = 2
C=(A < B); cout<< C;
Hasilnya = 1
Sehingga :
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
12
3. Arithmetic Statement
4. Operasi Boolean/logika : menghubungkan ungkapan relasi yang hasilnya true atau false. Operator : && (dan), || (atau), ! (not)
#include using namespace std;
5.Operasi Input/Output Operator cin, cout Standard Input : Keyboard Standard Output : Screen
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
13
A.
OPERASI KONTROL 1. Alternatif : Alternatif : if, if – – else, switch
2. Pengulangan : do – do – while, while, for
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
14
3. Percabangan
LATIHAN
#include using namespace std;
Struktur Data Struktur Data
#include using namespace std;
Universitas Pamulang
Teknik Informatika Teknik Informatika
15
KOREKSILAH KESALAHAN PROGRAM DIATAS
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
16
PERTEMUAN IV ARRAY (LARIK) Array adalah suatu struktur yang terdiri dari sejumlah elemen yang memiliki tipe data yang sama. Elemen‐elemen array tersusun secara sekuensial/ urut dalam memori komputer. Array dapat berupa satu dimensi, dua dimensi, tiga dimensi ataupun banyak dimensi (multi dimensi). Array Satu Dimensi Array Satu dimensi tidak lain adalah kumpulan elemen‐elemen identik yang tersusun dalam satu baris. Elemen‐elemen tersebut memiliki tipe data yang sama, tetapi isi dari elemen tersebut boleh berbeda. Bentuk umum: tipe_data nama_var_array [ukuran]; tipe_data nama_var_array ukuran
: menyatakan jenis menyatakan jenis tipe data elemen larik (int, char, float, dll) : menyatakan nama variabel yang dipakai. : menunjukkan jumlah menunjukkan jumlah maksimal elemen larik.
INISIALISASI Menginisialisasi array sama dengan memberikan nilai awal array pada saat didefinisikan. int nilai[10] = {23,34,32,12,25,14,23,12,11,10};
PENGAKSESAN nama_var_array [indeks]; Pengisian dan pengambilan nilai pada indeks tertentu dapat dilakukan dengan mengeset nilai atau menampilkan nilai pada indeks yang dimaksud. Pengaksesan elemen array dapat dilakukan berurutan atau random berdasarkan indeks tertentu secara langsung. Contoh : Sebuah array A[4] menyimpan data tipe int
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
17
Jum elemen array = 4 elemen Panjang array = 4 elemen * 4 byte/elemen = 16 byte Contoh Soal : 1.Suatu array dideklarasikan dengan A[9], setiap elemen terdiri dari 8 byte. Jika alamat elemen pertama sama dg 16FFH, ditanyakan : a.Jumlah elemen array b.Panjang array dalam byte c.Alamat A[5] Jawab : 1. &A[0] = 16FFH Lebar elemen = 8 byte/elemen a. Jumlah elemen array = 9 elemen b. Panjang array = 9 elemen x 8 byte/elemen = 72 byte c. &A[5] = ? Perpindahan = (5 – (5 – 0) elemen x 8 byte/elemen = 40 byte = 28H byte &A[5] = 16FFH + 28H = 1727H Soal : 1.Suatu array dideklarasikan dengan int Angka[12]. Jika alamat elemen pertama 2C3EH, ditanyakan : a.Jumlah elemen array b.Jumlah byte seluruhnya (panjang array) c.Alamat Angka[6]
2. Array 2D Deklarasi A[I]{J] I : Jumlah baris J : Jumlah kolom Urutan elemen dalam memori :
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
18
Urutan baris per baris ( Row Major Order/RMO) A[3][4] 0 1 2 3 0 1 2 3 4 1 5 6 7 8 2 9 10 11 12
Urutan kolom per kolom (Column Major Order/CMO) A[3][4] 0 1 2 3 0 1 4 7 10 1 2 5 8 11 2 3 6 9 12
Contoh : int A[3][4]
A. Jika matrik diatas disimpan dengan urutan RMO, maka : 17 14 75 10 20 Baris 0
50 80 11 35 Baris 1
60 90 Baris 2
12
Tipe data int memerlukan 4 byte/elemen. &A[0][1]=1004H, &A[0][2]=1008H, &A[0][3]=100CH &A[1][0]=1010H, &A[1][1]=1014H, &A[1][2]=1018 &A[1][3]=101B, &A[2][0]=1020, &A[2][1]=1024
B. Jika matrik disimpan dengan urutan CMO, maka: 17 20 35 14 50 60 Kolom 0 Kolom 1
75 80 90 Kolom 2
10 11 12 Kolom 3
&A[1][0]=1004H, &A[2][0]=1008H, &A[0][1]=100BH &A[1][1]=1010H, &A[2][1]=1014H
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
19
Penyelesaian tanpa melihat gambar : a. Jika matrik diatas disimpan dengan urutan RMO, maka : Jumlah elemen/baris = 4 elemen/baris Ditanya : Diketahui :
&A[2][1] &A[0][0] _ 2 1 Pindah baris = 2 baris x 4 elemen/baris = 8 elemen Pindah kolom = 1 kolom = 1 elemen Total perpindahan = 8 + 1 = 9 elemen = 9 elemen x 4 byte/elemen = 36 byte = 24H byte Jadi &A[2][1] = 1000H + 24H = 1024H
b. Jika matrik diatas disimpan dengan urutan CMO, maka : Jumlah elemen/kolom = 3 elemen/kolom Ditanya : Diketahui :
&A[2][1] &A[0][0] _ 2 1 Pindah kolom = 1 kolom x 3 elemen/kolom = 3 elemen Pindah baris = 2 baris = 2 elemen Total perpindahan = 3 + 2 = 5 elemen = 5 elemen x 4 byte/elemen = 20 byte = 14H byte Jadi &A[2][1] = 1000H + 14H = 1014H
Soal : Diketahui suatu array 2D yang dideklarasikan dengan int A[6][7]. Alamat elemen pertama 10CCH. Ditanyakan : a.Jumlah elemen b.Jumlah byte seluruhnya c.Alamat A[2,5] (Penempatan dlm memori secara RMO dan CMO)
3. Array 3D Diketahui array A[2][3][3] dengan lebar elemen 2 byte. Alamat elemen pertama 1000H. Ditanya &A[1][2][1]? Jawab : 0 1 2 0 1 2 0 10 30 50 0 50 12 17 1 25 15 17 1 24 22 37 2 32 35 36 2 46 11 18 Blok 0 Blok 1
a.RMO Jumlah elemen tiap baris = 3 elemen/baris Jumlah elemen tiap bolk = 9 elemen/blok Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
20
Ditanya : Diketahui :
&A[1][2][1] &A[0][0][0] _ 1 2 1 Pindah kolom = 1 kolom = 1 elemen Pindah baris = 2 baris x 3 elemen/baris = 6 elemen Pindah blok = 1 blok x 9 elemen/blok = 9 elemen Total perpindahan = 1 + 6 + 9 = 16 elemen x 2 byte/elemen = 32 byte = 20H byte Jadi &A[1][2][1] = 1000H + 20H = 1020H
b. CMO Jumlah elemen tiap kolom = 3 elemen/kolom Jumlah elemen tiap bolk = 9 elemen/blok Ditanya : &A[1][2][1] Diketahui : &A[0][0][0] _ 1 2 1 Pindah kolom = 1 kolom x 3 elemen/kolom = 3 elemen Pindah baris = 2 baris = 2 elemen Pindah blok = 1 blok x 9 elemen/blok = 9 elemen Total perpindahan = 3 + 2 + 9 = 14 elemen x 2 byte/elemen = 28 byte = 1CH byte Jadi &A[1][2][1] = 1000H + 1CH = 101CH
Soal : Diketahui suatu array 3D yang dideklarasikan dengan int A[4][3][6]. Alamat elemen pertama adalah CBBDH. Ditanyakan : a. Jumlah elemen b. Jumlah byte seluruhnya c. &A[2][2][4] Contoh 1. #include using namespacestd; void main ( ) { int billy [ ] = {16, 2, 77, 40, 12071}; int n, result=0; for ( n=0 ; n<5 ; n++ ) { result += billy[n]; } cout<
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
21
Contoh 2. #include using namespacestd; void main ( ) { int A [5]={20,9,1986,200,13},n; cout<<"Data yang lama”<
TUGAS 1. Buatlah kesimpulan dari masing‐masing program diatas. 2. Buatlah program untuk menentukan nilai terkeci dan terbesar
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
22
PERTEMUAN V LANJUTAN ARRAY dimensi 1 Array adalah suatu struktur yang terdiri dari sejumlah elemen yang memiliki tipe data yang sama. Elemen ‐elemen array tersusun secara sekuensial/ urut dalam memori komputer. Array dapat berupa satu dimensi, dua dimensi, tiga dimensi ataupun banyak dimensi (multi dimensi). Array Satu Dimensi Array Satu dimensi tidak lain adalah kumpulan elemen‐elemen identik yang tersusun dalam satu baris. Elemen ‐elemen tersebut memiliki tipe data yang sama, tetapi isi dari elemen tersebut boleh berbeda.
/*Program Mencari bilangan Mencari bilangan Terkecil dan terbesar di terbesar di dalam dalam array */ array */ #include Using namespace std;
Output : Nilai maksimum : 76 Nilai minimum : 12
TUGAS : 1. Jelaskan konsep program tersebut diatas 2. Buatlah kesimpulan dari program diatas.
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
23
PERTEMUAN VI (Array Dimensi Dua ) TUJUAN : Agar mahasiswa memahami cara penjumlahan, pengurangan dan perkalian menggunakan Array dimensi 2
matriks
TEORI : Array dua dimensi sering digambarkan sebagai sebuah matriks, tabel yang merupakan perluasan dari array satu dimensi. Jika array satu dimensi hanya terdiri dari sebuah baris dan beberapa kolom elemen, maka array dua dimensi terdiri dari beberapa baris dan beberapa kolom elemen yang bertipe sama sehingga dapat digambarkan sebagai berikut: Tabel Data penjualan per tahun no 1 2 3
2001 45 32 11
2002 43 34 12
Tahun penjualan 2003 2004 2005 65 12 21 23 56 54 32 23 56
2006 12 34 76
2007 21 45 45
Bentuk umum: NamaArray [indeks_1][indeks_2]; Indeks_1 : menyatakan jumlah menyatakan jumlah baris Indeks_2 : menyatakan jumlah menyatakan jumlah kolom
Contoh: Tabel diatas dapat dituliskan kedalam array dimensi 2 sebagai berikut : Int data_jual [3][7]; bool papan[2][2] = { {true,false},{true,false} }; Elemen array dua dimensi diakses dengan menuliskan kedua indeks elemennya dalam kurung siku seperti pada contoh berikut: //papan nama memiliki 2 baris dan 5 kolom bool papan[2][5]; papan[0][0] = true; papan[0][4] = false; papan[1][2] = true; papan[1][4] = false;
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
24
CONTOH : // array dimensi dua #include #include Using namespace std; Void main() { Int i,j; Int data_jual[4][4]; for(i=1;i<=3; i++) { for(j=1;j<=3; j++) for(j=1;j<=3; j++) { cout<<”Data ke ‐ “ << i<< “, “<>data_jual[i][j]; } } cout << “ NO 2001 2002 2003”<
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
25
PERTEMUAN VII POINTER Pointer merupakan tipe data berukuran 32 bit yang berisi satu nilai yang berpadanan dengan alamat memori tertentu. Sebagai contoh, sebuah variabel P bertipe pointer bernilai 0x0041FF2A, berarti P menunjuk pada alamat memori 0041FF2A. Pointer dideklarasikan seperti variabel biasa dengan menambahkan tanda * (asterik) yang mengawali nama variabel. Bentuk Umum: namaVariabel;
Contoh: float * px; Statement di atas mendeklarasikan variabel px yang merupakan pointer. Penyebutan tipe data float berarti bahwa alamat memori yang ditunjuk oleh px dimaksudkan untuk berisi data bertipe float.
Contoh Program 1
#include using namespace std; void main( ) { Int x; Int *px; X=2; px = &x // membaca alamat dari x cout <<”Nilai x ……………………. : “<< x<< endl; cout <<”Nilai *px……………….… : “<
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
26
KELUARANNYA :
Program 2. #include using namespace std; void main( ) { Int x[10]={0,1,2,3,4,5,6,7,8,9} Int *px; Int i; for(i=0;i<10;i++) { px = &x[i] ; // membaca alamat dari x cout <
Output nya :
Program 3.
#include using namespace std;
Output nya Selamat datang Muhammad Fachrurrozi Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
27
TUGAS : 1. Tentukan ukuran masing –masing tipe data dasar ( int, unsigned int, float, double, long, char, bool) dan berikan contoh programnya. 2. Tulis alamat masing‐masing variabel yang anda gunakan dalam praktikum
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
28
PERTEMUAN VIII Struktur TEORI Structure (struktur) adalah kumpulan elemen‐elemen data yang digabungkan menjadi satu kesatuan. Masing‐masing elemen data tersebut dikenal dengan sebutan field. Field data tersebut dapat memiliki tipe data yang sama ataupun berbeda. Walaupun fieldfield tersebut berada dalam satu kesatuan, masing‐masing field tersebut tetap dapat diakses secara individual. Field‐field tersebut digabungkan menjadi satu dengan tujuan untuk kemudahan dalam operasinya. Misalnya Anda ingin mencatat data‐data mahasiswa dan pelajar dalam sebuah program, Untuk membedakannya Anda dapat membuat sebuah record mahasiswa yang terdiri dari field nim, nama, alamat dan ipk serta sebuah record pelajar yang terdiri dari field‐ field nama, nonurut, alamat dan jumnilai. Dengan demikian akan lebih mudah untuk membedakan keduanya. Bentuk umum : typedef struct typedef struct nama_struct { tipe_data ; tipe_data ; .... }; DEKLARASI Ada 2 cara pendeklarasian struct, yaitu : Deklarasi 1: typedef struct typedef struct Mahasiswa { char NIM[8]; char nama[50]; float ipk; }; Deklarasi 2 : struct { char NIM[8]; char nama[50]; float ipk; } mhs;
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
29
ARRAY OF STRUCT Apabila hendak menggunakan satu struct untuk beberapa kali, ada 2 cara : 1. Deklarasi manual
#include typedef struct typedef struct Mahasiswa { char NIM[8]; char nama[50]; float ipk; }; void main( ) { Mahasiswa a,b,c; …… …… …… } artinya struct mahasiswa digunakan untuk 3 variabel, yaitu a,b,c 2. Array of struct of struct #include typedef struct typedef struct Mahasiswa { char NIM[8]; char nama[50]; float ipk; }; void main() { Mahasiswa mhs[3]; …… …… …… } artinya struct mahasiswa digunakan untuk mhs[0], mhs[1], dan mhs[2]
Akses data. Untuk menggunakan struktur, tulis nama struktur beserta dengan fieldnya yang dipisahkan dengan tanda titik (“ . “). Misalnya Anda ingin menulis nim seorang mahasiswa ke layar maka penulisan yang benar adalah sebagai berikut:
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
30
Jika Pmhs adalah pointer bertipe mahasiswa* maka field dari Pmhs dapat diakses dengan mengganti tanda titik dengan tanda panah (“ à “)
Contoh /* Mengisi Biodata dan Nilai IPK mahasiswa */
#include Using namespace std ;
Keluarannya
TUGAS 1. Buat struct untuk data buku yang berisi tentang : kode buku, nama buku, tahun terbit, pengarang, dan harga. Gunakan array of struct of struct 2. Buat program menghitung durasi rental warnet, dengan ketentuan perhitungannya: 30 detik = Rp. 130,‐ Satuan waktu : jam : menit : detik
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
31
PERTEMUAN IX ( STACK )
TUJUAN ‐ Agar mahasiswa memahami metode pengolahan data menggunakan metode stack ‐ Mahasiswa mampu mengurutkan data menggunakan metode pengolahan stack TEORI: Stack adalah suatu tumpukan DATA . Konsep utamanya adalah LIFO (Last In First Out), DATA yang terakhir masuk dalam stack akan menjadi DATA pertama yang dikeluarkan dari stack Ada dua jenis dua jenis stack yaitu single stack dan double stack .
I. Single Stack/Stack Tunggal : satu stack dalam satu array. KONDISI STACK Kosong : Top = ‐1 Bisa Diisi : Top < n‐1 Gambar 1
Ada Isinya: Top > ‐1 Masih Bisa Diisi : Top < n‐1 Gambar 2
Penuh : Top = n ‐ 1 Ada Isinya : Top > n‐1 Gambar 3
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
32
Ada 4 macam kondisi stack
a b c d
Kondisi Stack Kosong Penuh Bisa diisi (kebalikan penuh) Ada Isinya (kebalikan kosong)
Ciri Top = ‐1 Top = n – 1 Top < n ‐ 1 Top > ‐1
Ilustrasi Ganbar 1. Gambar 3 Gambar 1. & 2 Gambar 2 & 3
Proses : a. AWAL (inisialisasi) b. PUSH (Insert, Masuk, Simpan, Tulis) c. POP (Delete, Keluar, Ambil, Baca/Hapus)
a.
Algoritma PUSH Periksa apakan Top < n – 1 Jika ya, Naikan Top dengan 1 o Isikan data kedalam elemen yang ditunjuk Top o Jika tidak, Cetak komentar “Stack Penuh” o
if(Top < n – 1) { S[++Top] = x; } else Cout<< ”Stack Penuh”;
b. Algoritma POP Periksa apakah Top > ‐1 Jika ya, Copy data dari elemen yg ditunjuk Top ke suatu variabel o
Jika tidak, Cetak komentar “Stack kosong” o
if(Top > –1) { x = S[Top‐‐]; } else Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
33
Cout<< ”Stack Kosong”; Contoh 1. //Program mengurutkan data menggunakan metode stack. #include #include using namespace std ; void main ( ) { int SA[20], SB[20],X,I, TOPA,TOPB; TOPA= ‐1; TOPB = ‐1; cin>> X; TOPA++ ; SA[TOPA]=X; for ( I=1 ; I<=9 ; I++) { cin>> X; while(TOPA > ‐1 && SA[TOPA] > X) { TOPB++; SB[TOPB] = SA[TOPA]; TOPA‐‐; } TOPA++ SA[TOPA]= X; While(TOPB> ‐1) { TOPA++; SA[TOPA] = SB[TOPB]; TOPB‐‐; } } for ( I=1 ; I<=9 ; I++) { Cout<
TUGAS : 1. Jelaskan dan buat kesimpulan tentang pengolahan data menggunakan metode stack tersebut diatas 2. Buatlah program yang akan mengisi dan menjumlahkan seluruh isi stack.
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
34
PERTEMUAN X ( DOUBLE STACK ). 2. Double Stack
Dua stack dalam satu array Dasar stack1 berada pada index terkecil Dasar stack2 berada pada index terbesar
Ilustrasi :
Proses : a) b) c) d) e)
AWAL(Inisialisasi) PUSH1, Push untuk stack1 POP1, Pop untuk stack1 PUSH2, Push untuk stack2 POP2, Pop untuk stack2
a. Fungsi dasar proses AWAL : void AWAL(void) { Top1 = ‐1; Top2 = n; } b. Fungsi dasar proses PUSH1 : void PUSH1(void) { S[++Top1] = x; } c. Fungsi dasar proses POP1 : void POP1(void) { x = S[Top1‐‐]; }
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
35
d. Fungsi dasar proses PUSH2 : void PUSH2(void) { S[‐‐Top2] = x; }
e. Fungsi dasar proses POP2 : void POP2(void) { x = S[Top2++]; }
Kondisi Stack
1 2 3 4 5 6
Kondisi Stack Stack1 kosong Stack2 kosong Stack Penuh Stack bisa diisi Stack1 ada isinya Stack2 ada isinya
Ciri Top1 = ‐1 Top2 = n Top2 – Top2 – Top1 = 1 Top2 – Top2 – Top1 > 1 Top1 > ‐1 Top2 < n
a) Algoritma lengkap proses PUSH1 : Periksa apakah Top2 – Top2 – Top1 > 1, a. jika ya : Naikan Top1 dengan 1 o Isikan data kedalam elemen yang ditunjuk oleh Top1 o b. Jika tidak Cetak komentar “Stack Penuh” o void PUSH1(void) { if(Top2 – if(Top2 – Top1 > 1) S[++Top1] = x; else cout<< “Stack Penuh”; }
b) Algoritma lengkap proses POP1 : Periksa apakah Top1 > ‐1, Jika ya, Copy data dari elemen yang ditunjuk Top1 o Turunkan Top1 o Jika tidak, Cetak komentar “Stack Kosong” o
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
36
void POP1(void) { if(Top1 > ‐1) x = S[Top1‐‐] ; else cout<< “Stack Kosong”; }
c) Algoritma lengkap proses PUSH2 : Periksa apakah Top2 – Top2 – Top1 > 1, c. jika ya : i. Turunkan Top2 dengan 1 ii. Isikan data kedalam elemen yang ditunjuk oleh Top2 d. Jika tidak i. Cetak komentar “Stack Penuh” void PUSH2(void) { if(Top2 – if(Top2 – Top1 > 1) S[‐‐Top2] = x; else cout<< “Stack Penuh”; }
d) Algoritma lengkap proses POP2 : Periksa apakah Top2 < n, Jika ya, Copy data dari elemen yang ditunjuk Top2 o Naikan Top2 o Jika tidak, Cetak komentar “Stack Kosong” o void POP2(void) { if(Top2 < n) x = S[Top2++] ; else cout<< “Stack Kosong”; }
Soal : 1. Susunlah program untuk menginput data dari keyboard terus menerus hingga stack1 penuh 2. Susunlah program untuk menginput data dari keyboard terus menerus hingga stack2 penuh 3. Susunlah program untuk menghapus stack1 hingga kosong 4. Susunlah program untuk menghapus stack2 hingga kosong
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
37
PERTEMUAN XI Queue ( Antrian ) TUJUAN : ‐ Agar mahasiswa mampu memahami konsep pengolahan data dengan menggunakan metode antrian linear TEORI : Jika diartikan secara harfiah, queue berarti antrian, queue merupakan salah satu contoh aplikasi dari pembuatan double linked list yang cukup sering kita temui dalam kehiduypan sehari‐hari, misalnya saat Anda mengantri di loket untuk membeli tiket. Istilah yang cukup sering dipakai seseorang masuk dalam sebuah antrian adalah enqueue. Dalam suatu antrian, yang dating terlebih dahulu akan dilayani lebih dahulu. Istilah yang sering dipakai bila seseorang keluar dari antrian adalah dequeue. Walaupun berbeda implementasi, struktur data queue setidaknya harus memiliki operasi‐operasi sebagai berikut : Queue menggunakan array 1D: 1. Linear Queue (Antrian Lurus) 2. Circular Queue (Antrian Melingkar) 3. Double Ended Queue/Deque (Antrian dengan ujung ganda)
A. ANTRIEN LINEAR. I. Ilustrasi Misal n= 10
F (Front) : menunjuk pengantri paling depan/siap untuk keluar/ siap untuk dilayani R (Rear) : menunjuk pengantri paling belakang/paling akhir masuk R = 6, artinya : Pernah masuk 7 pengantri dengan urutan masuk Q[0], Q[1], Q[2], Q[3], Q[4], Q[5], Q[6] F = 3, artinya : Sudah keluar sebanyak 3 pengantri dengan urutan keluar Q[0], Q[1], Q[2]
II. Prinsip : FIFO(First In First Out) atau III. Proses : AWAL (Inisialisasi) INSERT (Sisip, Masuk, Simpan, Tulis) DELETE (Hapus, Keluar, Ambil, Dilayani) RESET (Kembali ke keadaan awal)
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
38
a) Fungsi dasar untuk proses AWAL : void AWAL(void) { F = 0; R = ‐1; }
b) Fungsi dasar proses INSERT : void INSERT(void) { if(R < n – 1) Q[++R] = x; else cout<<”Antrian penuh”; }
c) Fungsi dasar proses DELETE void DELETE(void) { if(F < R + 1) { x = Q[F++]; if(F == n) { F = 0; R = ‐1; } } else cout<<”Antrian kosong”; }
d) Fungsi dasar proses RESET : void RESET(void) { F = 0; R = ‐1; }
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
39
IV. Kondisi antrian (n : jml elemen array) 1. Kondisi awal a. F = 0, R = ‐1 kondisi awal b. F = R + 1 antrian kosong c. R < n ‐ 1 antrian bisa diisi
2. Misal masuk 1 pengantri, belum ada yang keluar a. F = 0 belum ada yang keluar b. F < R + 1 antrian ada isinya c. R < n – 1 antrian bisa diisi
3. Misal masuk lagi 5 pengantri, belum ada yang keluar a. R = 5 sudah pernah masuk 6 b. F = 0 belum ada yang keluar c. F < R + 1 antrian ada isinya d. R < n – 1 antrian bisa diisi
4. Misal keluar 5 pengantri a. F = 5 sudah keluar 5 pengantri b. F = R tinggal 1 pengantri c. F < R + 1 antrian ada isinya d. R < n – 1 antrian bisa diisi
5. Misal keluar lagi satu pengantri a. F = 6 sudah keluar 6 pengantri b. R = 5 c. F = R + 1 antrian kosong d. R < n + 1 antrian bisa diisi
6. Misal masuk lagi 3 pengantri a. F < R + 1 antrian ada isinya b. R < n – 1 antrian masih bisa diisi
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
40
7. Misal masuk lagi 1 pengantri a. F < R + 1 antrian ada isinya b. R = n – 1 antrian penuh
8. Misal keluar 3 pengantri a. F < R + 1 antrian ada isinya b. F = R antrian sisa 1 pengantri c. R = n – 1 antrian penuh
9. Misalkan keluar 1 pengantri a. F = n semua antrian sudah keluar b. F = R + 1 antrian kosong c. R = n – 1 antrian penuh (disebut penuh) d. F = R + 1 dan R = n – 1 kondisi khusus : Kosong karena tidak ada isinya Penuh karena tidak bisa diisi Perlu direset(kembali ke posisi awal)
10. Kondisi khusus lainnya : a. Antrian penuh tapi belum ada yang keluar i. F = 0 belum ada yang keluar ii. R = n – 1 antrian penuh
Kondisi antrian: Kondisi a Kosong b Penuh c Bisa diisi d Ada isinya e Perlu direset
Struktur Data Struktur Data
Ciri F = R + 1 dimana saja R = n – 1 R < n – 1 F
Universitas Pamulang
Teknik Informatika Teknik Informatika
41
Soal 1. Buatlah suatu program Animasi Antrian dengan 4 buah pilihan : INSERT, DELETE, CETAK ANTRIAN, QUIT. Jika dipilih INSERT : program akan meminta user untuk menginput sebuah karakter yang akan dimasukan kedalam antrian Jika dipilih DELETE : maka karakter pertama masuk akan dikeluarkan dari antrian Jika dipilih CETAK ANTRIAN : komputer menampilkan karakter yang ada pada antrian Jika dipilih QUIT : program keluar
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
42
PERTEMUAN X B. Cicular Queue ( Antrian Melingkar ) TUJUAN : ‐ Agar mahasiswa mampu memahami konsep pengolahan data dengan menggunakan metode antrian melingkar. ‐ Mahasiswa mampu membedakan konsep pengolahan data menggunakan metode antrian linear dan metode antrian melingkar. TEORI : I. Representasi Misal n= 10
atau
Counter : Jumlah pengantri yang ada dalam antrian F tidak selalu <= R Setelah R dan F sampai ke n‐1, maka tidak direset tetapi melingkar ke 0. II. Prinsip : FIFO(First In First Out) III. Proses : AWAL (Inisialisasi) INSERT (Sisip, Masuk, Simpan, Tulis) DELETE (Hapus, Keluar, Ambil, Dilayani) a) Fungsi dasar untuk proses AWAL : void AWAL(void) { F = 0; R = ‐1; COUNTER = 0 } b) Fungsi dasar proses INSERT : void INSERT(void) void INSERT(void) { { R = (R + 1) % n; if(COUNTER < n) Q[R] = x; { COUNTER++; R = (R + 1) % n; } Q[R] = x; Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
43
COUNTER++; } else cout<<”Antrian penuh”; } c) Fungsi dasar proses DELETE : void DELETE(void) void DELETE(void) { { x = Q[F]; if(COUNTER > 0) F =(F + 1) % n; { COUNTER‐‐; x = Q[F]; } F = (F + 1) %n; COUNTER‐‐; } else cout<<”Antrian kosong”; } IV. Kondisi antrian (n : jml elemen array). Beberapa kondisi antrian al : 1. Kondisi awal d. F = 0, R = ‐1, COUNTER = 0 e. COUNTER = 0
kondisi awal Antrian kosong
2. Misal masuk 1 pengantri, belum ada yang keluar a. COUNTER > 0 ada isinya b. F = R isinya hanya 1 c. Counter < n masih bisa diisi
3. Misal masuk lagi 3 pengantri, belum ada yang keluar a. COUNTER > 0 ada isinya b. F <> R + 1 ada isinya c. COUNTER < n masih bisa diisi
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
44
4. Misal keluar 1 pengantri a. COUNTER > 0 ada isinya b. F <> R + 1 ada isinya c. COUNTER < n bisa diisi
5. Misal masuk lagi 3 pengantri a. COUNTER > 0 ada isinya b. F <> R + 1 ada isinya c. COUNTER < n bisa diisi
6. Misal keluar 2 pengantri a. COUNTER > 0 ada isinya b. R <> R + 1 ada isinya c. COUNTER < n bisa diisi
7. Misal keluar lagi 3 pengantri a. COUNTER > 0 ada isinya b. F = R hanya 1 pengantri c. COUNTER < n bisa diisi
8. Misal keluar lagi 1 pengantri Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
45
a. COUNTER = 0 antrian kosong b. COUNTER < n bisa diisi
9. Misalkan masuk lagi 3 pengantri a. COUNTER > 0 ada isinya b. COUNTER < n bisa diisi
10. Misal masuk lagi 4 pengantri a. COUNTER > 0 ada isinya b. COUNTER < n bisa diisi
11. Misal masuk lagi 2 pengantri a) COUNTER >0 ada isinya b) F <> R + 1 ada isinya c) COUNTER < n bisa diisi
12. Misal masuk lagi 1 pengantri a) COUNTER > 0 ada isinya b) COUNTER = n antrian penuh
Kondisi antrian: Kondisi a Kosong b Penuh c Bisa diisi Struktur Data Struktur Data
Ciri COUNTER = 0 COUNTER = n COUNTER < n Universitas Pamulang
Teknik Informatika Teknik Informatika
46
d
Ada isinya
COUNTER > 0
TUGAS : Buatlah suatu program Animasi Antrian Melingkar dengan 4 buah pilihan : INSERT, DELETE, CETAK ANTRIAN, QUIT. Jika dipilih INSERT : program akan meminta user untuk menginput sebuah karakter yang akan dimasukan kedalam antrian Jika dipilih DELETE : maka karakter pertama masuk akan dikeluarkan dari antrian Jika dipilih CETAK ANTRIAN : komputer menampilkan karakter yang ada pada antrian Jika dipilih QUIT : program keluar
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
47
PERTEMUAN 11. C. Double Ended Queue I. Representasi Misal n= 10
Insert Kiri : masuk dari pintu kiri Insert Kanan : masuk dari pintu kanan Delete Kiri : keluar dari pintu kiri Delete Kanan : keluar dari pintu kanan II. Prinsip : Keluar masuk dari kedua ujung III. Proses : AWAL (Inisialisasi) INSERT (Sisip, Masuk, Simpan, Tulis) DELETE (Hapus, Keluar, Ambil, Dilayani) e) Fungsi dasar untuk proses AWAL : void AWAL(void) { L = 0; R = ‐1; } f) Fungsi dasar proses INSERT KIRI: void INSERT_KIRI(void) { Q[‐‐L] = x; } g) Fungsi dasar proses INSERT KANAN: void INSERT_KANAN(void) { Q[++R] = x; } h) Fungsi dasar proses DELETE KIRI: void DELETE_KIRI(void) { x = Q[L++]; }
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
48
i)
Fungsi dasar proses DELETE KANAN : void DELETE_KANAN(void) { x = Q[R‐‐]; }
IV. Kondisi antrian (n : jml elemen array). 1. Kondisi awal L = 0, R = ‐1 • L = R ‐ 1 • L=0 • R < n – 1 •
kondisi awal Antrian kosong Penuh kiri Bisa insert kanan
2. Misal masuk 1 pengantri dari kanan L
3. Misal masuk lagi 3 pengantri dari kanan L
4. Misal keluar 1 pengantri dari kiri L < R + 1 ada isinya • L>0 bisa insert kiri • R < n ‐ 1 bisa insert kanan •
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
49
5. Misal masuk lagi 3 pengantri dari kanan L < R + 1 ada isinya • L>0 bisa insert kiri • R < n – 1 bisa insert kanan •
6. Misal keluar 5 pengantri melalui kiri L < R + 1 ada isinya • L>0 bisa insert kiri • R < n – 1 bisa insert kanan • L=R hanya 1 pengantri •
7. Misal keluar 1 pengantri melalui kiri L = R + 1 ada isinya • L>0 bisa insert kiri • R < n ‐ 1 bisa insert kanan •
8. Misal masuk 4 pengantri dari kiri L < R + 1 ada isinya • L>0 bisa insert kiri • R < n – 1 bisa insert kanan •
9. Misalkan masuk lagi 2 pengantri dari kanan L < R + 1 ada isinya • L>0 bisa insert kanan • R < n – 1 bisa insert kanan •
10. Misal masuk lagi 1 pengantri dari kanan L < R + 1 ada isinya • L>0 bisa insert kiri • R = n – 1 penuh kanan • Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
50
11. Misal masuk lagi 3 pengantri dari kiri L
12. Misal seluruh pengantri keluar dari kiri L = R + 1 antrian kosong • L>0 bisa insert kiri • R = n – 1 penuh kanan •
Kondisi antrian: Kondisi a Kosong b Penuh kiri c Penuh kanan d Bisa diisi dari kiri e Bisi diisi dari kanan f Ada isinya
Ciri L=R+1 L=0 R = n ‐1 L>0 R < n – 1 L
V. Fungsi lengkap a) INSERT KIRI lengkap void INSERT_KIRI(void) { if(L > 0) { Q[‐‐L] = x; } else cout<<”Antrian penuh kiri”; }
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
51
b) INSERT KANAN lengkap void INSERT_KANAN(void) { if(R < n ‐ 1) { Q[++R] = x; } else cout<<”Antrian penuh kanan”; } c) DELETE KIRI lengkap void DELETE_KIRI(void) { if(L < R + 1) { x = Q[L++]; } else cout<<”Antrian kosong”; }
d) DELETE KANAN lengkap void DELETE_KANAN(void) { if(L < R + 1) { x = Q[R‐‐]; } else cout<<”Antrian kosong”; } Soal 1. Buatlah suatu program Animasi Double Ended Queue dengan 6 buah pilihan : INSERT KIRI, INSERT KANAN, DELETE KIRI, DELETE KANAN, CETAK ANTRIAN, QUIT.
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
52
PERTEMUAN XII. ( Lingked List) TUJUAN :
-
Agar mahasiswa memahami konsep penambahan data pada pengolahan data menggunakan Lingked List
TEORI Link List: sejumlah obyek yang dilink/dihubungkan satu dengan lainnya. Obyek : gabungan bebErapa elemen data yg dijadikan satu kelompok/struktur/record Untuk menghubungkan antar obyek perlu variabel tipe pointer yg merupakan salah satu variabel dalam struktur obyek. Ada 4 macam struktur linked list :
1. Linear Singly Linked List 2. Linear Double – Double – Linked List 3. Circular Single – Single – Linked list 4. Circular Double linked List
1. Linear Singly Linked List : Link list lurus dengan pointer tunggal
I. Ilustrasi
Ada 4 simpul : 1, 2, 3, 4 Setiap simpul terdiri dari 2 elemen/field, yaitu : INFO : bertipe integer o LINK : bertipe pointer o Simpul no.1 : Field INFO berisi 10 o Field LINK berisi alamat simpul no. 2 o Simpul no.1 ditunjuk oleh pointer FIRST Simpul no.4 ditunjuk oleh pointer LAST
Ilustrasi sebuah simpul :
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
53
Untuk mempersiapkan sebuah linked list maka harus dideklarasikan sebagai berikut : struct SIMPUL { int INFO; struct SIMPUL *LINK; }; SIMPUL *P,*Q,*FIRST,*LAST;
II. Proses a. Inisialisasi : persiapan pembuatan linked list b. Membuat simpul awal c. Insert simpul kedalam linked list d. Delete simpul dari linked list II.1. Inisialisasi FIRST = NULL; LAST = NULL; II.2. Pembuatan simpul Instruksi untuk membuat sebuah simpul : P=(SIMPUL*) malloc(sizeof(SIMPUL)); Fungsi untuk membuat simpul : void BUAT_SIMPUL(int X) { P=(SIMPUL*) malloc(sizeof(SIMPUL)); if(P!=NULL) { P‐>INFO=X; } else cout<<”Pembuatan simpul gagal”; } Contoh : #include #include struct SIMPUL{ int INFO; struct SIMPUL *LINK; }; SIMPUL *P,*FIRST,*LAST; void BUAT_SIMPUL(int); using namespace std; void main(void) { Struktur Data Struktur Data
void BUAT_SIMPUL(int x) { P=(SIMPUL *)malloc(sizeof(SIMPUL)); if(P!=NULL) P‐>INFO=x; else cout<<"Pembuatan Simpul Gagal"<
Universitas Pamulang
Teknik Informatika Teknik Informatika
54
int x; cout<<"Masukan Data : ";cin>>x; BUAT_SIMPUL(x); cout<<"Data : "<INFO<
II. 3. Pembuatan simpul awal Menjadikan sebuah simpul menjadi simpul awal dari sebuah linked list. Simpul awal ditunjuk oleh pointer FIRST. Fungsi : Void AWAL(void) { if(FIRST==NULL) { FIRST=P; LAST=P; P‐>LINK=NULL; } else cout<<”Linked List sudah ada””<
FIRST=P
LAST=P atau LAST=FIRST P‐>LINK=NULL atau FIRST‐>LINK=NULL atau LAST‐>LINK=NULL
II.4. Insert Kanan Menyisipkan sebuah simpul baru pada ujung kanan linked list. Proses : - sudah ada linked list
- buat simpul baru - sisipkan simpul baru tsb diujung kanan linked list Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
55
Fungsi : void INSERT_KANAN(void) { if(LAST!=NULL) { LAST‐>LINK=P; LAST=P; P‐>LINK=NULL; } else cout<<”Linked List belum ada”; } Ilustrasi : Sudah ada linked list
Buat simpul baru P=(SIMPUL *)malloc(sizeof(SIMPUL)); LAST‐>LINK=P atau FIRST‐>LINK=P LAST=P atau LAST=FIRST‐>LINK P‐>LINK=NULL atau LAST‐>LINK=NULL atau FIRST‐>LINK‐>LINK=NULL
II.5. Insert Kiri Menyisipkan sebuah simpul baru pada ujung kiri linked list. Proses : - sudah ada linked list
- buat simpul baru - sisipkan simpul baru tsb diujung kiri linked list Fungsi : void INSERT_KIRI(void) { if(FIRST!=NULL) { P‐>LINK=FIRST; FIRST=P; } Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
56
else cout<<”Linked List belum ada”; } Ilustrasi: Sudah ada linked list
Buat simpul baru P=(SIMPUL *)malloc(sizeof(SIMPUL)); P‐>LINK=FIRST atau P‐>LINK=LAST FIRST=P
II.6. Insert Tengah Menyisipkan sebuah simpul antara dua buah simpul pada linked list.
setelah diinsert menjadi :
Syarat : simpul no.7 harus sudah ditunjuk oleh pointer Q, caranya : Q=FIRST; For(i=1;i<=6;i++) Q=Q ‐>LINK; Fungsi : Void INSERT_TENGAH(void) { P‐>LINK=Q ‐>LINK; Q ‐>LINK=P; }
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
57
TUGAS Buat program animasi Linear Singly Linked List untuk mengelola data mahasiswa dengan struktur mahasiswa sbb : NAMA, NIM, GENDER, NILAI STRUKTUR DATA. Program dibuat dalam bentuk menu dengan pilihan : INSERT DATA, , CETAK DATA, EXIT. Ket : INSER DATA : menyisipkan satu simpul pada akhir linked list CETAK DATA : mencetak seluruh isi linked list EXIT : Keluar/selesai
Tampilan menu : LIN. SINGLY LINKED LIST ========================== 1. INSERT DATA 2. CETAK DATA 3. EXIT Pilihan (1 – (1 – 3) :
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
58
PERTEMUAN XIII Lanjutan Lingked List (DELETE) TUJUAN :
-
Agar mahasiswa memahami konsep delete pada pengolahan data menggunakan Lingked List
TEORI Link List: sejumlah obyek yang dilink/dihubungkan satu dengan lainnya. Obyek : gabungan bebrapaelemen data yg dijadikan satu kelompok/struktur/record Untuk menghubungkan antar obyek perlu variabel tipe pointer yg merupakan salah satu variabel dalam struktur obyek.
II.7. Delete Kanan/Akhir Menghapus simpul yang ada pada linked list paling akhir/kanan. Ilustrasi : sudah ada sebuah linked list
akan dihapus simpul terakhir menjadi :
Syarat agar simpul no.8 dapat dihapus adalah simpul no.7 sudah ditunjuk oleh pointer Q. Caranya : Q = Q = FIRST; while(Q ‐ ‐>LINK != LAST) Q = Q = Q ‐ ‐> LINK; Fungsi : void DELETE_KANAN(void) { free(LAST); LAST = Q; LAST ‐> LINK = NULL; } Ilustrasi : Sudah ada linked list
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
59
free(LAST)
LAST = Q
LAST ‐> LINK = NULL
II.8. Delete Kiri/Awal Menghapus simpul yang ada pada linked list paling awal/kiri. Ilustrasi : sudah ada sebuah linked list
akan dihapus simpul awal menjadi :
Fungsi : void DELETE_KIRI(void) { Q = Q = FIRST; ‐> LINK; FIRST = Q ‐ free(Q); } Ilustrasi : Sudah ada linked list
Q = Q = FIRST
‐> LINK FIRST = Q ‐
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
60
free(Q) Tuliskan cara lain! Tip : Tempatkan Q pada Q pada simpulkedua, hapus simpul pertama, pindahkan FIRST ke simpul kedua.
II.9. Delete Tengah Menghapus simpul yang ada diantara dua simpul lain. Ilustrasi : sudah ada linked list
simpul no.7 akan dihapus sehingga menjadi :
Syarat agar simpul no.7 bisa dihapus maka simpul no.6 harus sudah ditunjukoleh Q. Caranya : Q = Q = FIRST; For(I = 1; I <= 5; I++) Q = Q = Q ‐ ‐> LINK; Fungsi : void DELETE_TENGAH(void) { ‐> LINK; R = Q ‐ Q ‐ ‐> LINK = R ‐> LINK; free(R); } Ilustrasi : Sudah ada linked list
R = Q ‐ ‐> LINK
Q ‐ ‐> LINK = R ‐> LINK
free(R)
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
61
TUGAS : Buat program animasi Linear Singly Linked List untuk mengelola data mahasiswa dengan struktur mahasiswa sbb : NAMA, NIM, GENDER, NILAI STRUKTUR DATA. Program dibuat dalam bentuk menu dengan pilihan : INSERT DATA, HAPUS DATA, CETAK DATA, EXIT. Ket : INSER DATA : menyisipkan satu simpul pada akhir linked list HAPUS DATA :menghapus satu simpul pada akhir linked list CETAK DATA : mencetak seluruh isi linked list EXIT : Keluar/selesai Tampilan menu : LIN. SINGLY LINKED LIST ========================== 1. INSERT DATA 2. HAPUS DATA 3. CETAK DATA 4. EXIT Pilihan (1 – (1 – 4) :
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
62
PERTEMUAN XIV Aplikasi Antrian pada single lingked list TUJUAN ;
-
Agar mahasiswa mampu mengaplikasikan dan memahami pengolahan data lingked list yang diperlakukan sebagai antrian.
TEORI :
Proses : FIFO INSERT : selalu Insert Kanan DELETE : selalu Delete Kiri Bila FRONT = REAR artinya antrian tinggal 1 (simpul awal) Bila FRONT = NULL artinya antrian kosong Fungsi‐fungsi yang diperlukan : 1) Deklarasi struktur simpul dan pointer yg diperlukan struck SIMPUL{ int INFO; struck SIMPUL *LINK; }; SIMPUL *P,*Q,*FRONT,*REAR; 2) Inisialisasi FRONT = NULL; REAR = NULL; 3) Fungsi pembuatan Simpul Baru void BUAT_SIMPUL(int X) { P=(SIMPUL *)malloc(sizeof(SIMPUL)); if(P!=NULL) P‐>INFO=X; else Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
63
{ cout<<”Membuat simpul gagal”; exit(1); } }
4) Fungsi INSERT (Insert Kanan atau BuatAwal) void INSERT(void) { if(FRONT==NULL) { FRONT=P; REAR=P; REAR‐>LINK=NULL; } else { REAR‐>LINK=P; REAR=P; REAR‐>LINK=NULL; } } 5) Fungsi DELETE (Delete Kiri) Int DELETE(void) { int X; if(FRONT!=NULL) { X=FRONT‐>INFO; Q=FRONT‐>LINK; free(FRONT); FRONT=Q; return(X); } else cout<<”Queue Kosong”; } TUGAS : Buat program animasi Queue menggunakan Linked List tanpa Head untuk mengelola data mahasiswa dengan struktur mahasiswa sbb : NAMA, NIM, GENDER, NILAI STRUKTUR DATA. Program dibuat dalam bentuk menu dengan pilihan : INSERT DATA, HAPUS DATA, CETAK DATA, EXIT.
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
64
PERTEMUAN XV Aplikasi Stack pada lingked list TUJUAN :
-
Mahasiswa mampu mengaplikasikan teori stack untuk menangani data yang berbentuk lingked list.
TEORI : Ilustrasi untuk STACK tanpa menggunakan simpul Head
PUSH : selalu insert kiri POP : selalu delete kiri Jika TOP‐>LINK=NULL berarti isi stack tinggal satu simpul (simpul pertama) dan bila simpul ini dihapus (POP) maka TOP dibuat sama dengan NULL. Fungsi‐fungsi yang diperlukan : 1) Deklarasi struktur simpul dan pointer yang diperlukan struck SIMPUL{ int INFO; struck SIMPUL *LINK; }; SIMPUL *P,*Q,*TOP; 2) Inisialisasi stack TOP=NULL 3) Fungsi pembuat simpul baru void BUAT_SIMPUL(int X) { P=(SIMPUL *)malloc(sizeof(SIMPUL)); if(P!=NULL) P‐>INFO=X; else Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
65
{ cout<<”Membuat simpul gagal”; exit(1); } } 4). Fungsi PUSH (Insert Kiri atau Buat Awal) void PUSh(void) { if(TOP==NULL) { TOP=P; TOP‐>LINK=NULL; } else { P‐>LINK=TOP; TOP=P; } } 1) Inisialisasi stack TOP=NULL 2) Fungsi pembuat simpul baru void BUAT_SIMPUL(int X) { P=(SIMPUL *)malloc(sizeof(SIMPUL)); if(P!=NULL) P‐>INFO=X; else { cout<<”Membuat simpul gagal”; exit(1); } } 3) Fungsi PUSH (Insert Kiri atau Buat Awal) void PUSh(void) { if(TOP==NULL) { TOP=P; TOP‐>LINK=NULL; } else { Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
66
P‐>LINK=TOP; TOP=P; } }
1) Fungsi POP (Delete Kiri) int POP(void) { int X; if(TOP!=NULL) { X=TOP‐>INFO; Q=TOP‐>LINK; free(TOP); TOP=Q; return(X); } else cout<<”Stack kosong”; } TUGAS Buat program animasi Stack menggunakan Linked List tanpa Head untuk mengelola data mahasiswa dengan struktur mahasiswa sbb : NAMA, NIM, GENDER, NILAI STRUKTUR DATA. Program dibuat dalam bentuk menu dengan pilihan : INSERT DATA, HAPUS DATA, CETAK DATA, EXIT.
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
67
PERTEMUAN XVI ( Linear Double Linked List ) Adalah Linked lurus dengan pointer ganda, yaitu ada dua buah pointer . Jadi dalam struktur simpul ada dua elemen atau field yang bertipe pointer. Yang pertama menunjuk alamat simpul sebelumnya dan yang kedua menunjuk simpul berikutnya.
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
68
PROSES
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
69
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
70
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
71
INSERT KIRI
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
72
INSERT TENGAH
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
73
DELETE KANAN
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
74
DELETE KIRI
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
75
DELETE TENGAH Diasumsikan pointer Q sudah Q sudah menunjuk ke simpul no 7
Buatlah fungsi delete tengah a. Jika pointer Q menunjuk Q menunjuk simpul nomer 8 b. Jika pointer Q menunjuk Q menunjuk simpul nomer 9
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
76
PERTEMUAN XVII A. Circular Single Linked List
Circular Single Linked List adalah singly Linked List dimana link simpul terakhir bukan diisi dengan null, tetapi diisi dengan alamat simpul pertama yaitu simpul yang ditunjuk oleh pointer FIRST, sehingga menciptakan efek melingkar’ sesuai arah jarum arah jarum jam’. jam’. Ilustrasi
PROSES
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
77
B. CIRCULAR DOUBLY LINKED LIST .
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
78
ILUSTRASI
PROSES
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
79
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
80
PERTEMUAN XVIII TREE ( POHON)
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
81
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
82
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
83
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
84
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
85
PERTEMUAN XIX POHON BINER
Pohon biner dengan kedalaman (depth) d =3
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
86
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
87
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
88
Pohon Biner Seimbang ( Balanced Binary Tree)
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
89
PERTEMUAN XX Penomoran Simpul Pohon Biner
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
90
Contoh Soal
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
91
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
92
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
93
PERTEMUAN XXI OPERASI PADA POHON BINER
PROSES INISIALISASI
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
94
PEMBUATAN SEBUAH SIMPUL
Menjadikan sebuah simpul menjadi sebagai simpul akar
Insert sebuah simpul
-
Insert urut nomor simpul, atau insert t level per level Insert pada nomor simpul tertentu
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
95
Insert urut nomor simpul, atau insert t level per level
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
96
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
97
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
98
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
99
PERTEMUAN XXII
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
100
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
101
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
102
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
103
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
104
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
105
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
106
PERTEMUAN XXIV Searching (sequencial dan binary.)
TUUAN
-
Agar mahasiswa memahami beberapa metode pencarian menggunakan metode sequencial dan binary.
TEORI sequential search , Teknik pencarian data dari array yang paling mudah adalah dengan cara sequential search dimana data dalam array dibaca 1 demi satu, diurutkan dari index terkecil ke index terbesar, maupun sebaliknya. Contoh : int a[5] = {0,3,6,10,1} jika kita ingin mencari bilangan 6 dalam array tersebut, maka proses yang terjadi kita mencari 1. dari array index ke‐0, yaitu 0, dicocokan dengan bilangan yang akan dicari, jika tidak sama, maka mencari ke index berikutnya 2. pada array index ke‐1, juga bukan bilangan yang dicari, maka kita mencari lagi pada index berikutnya 3. pada array index ke‐2, ternyata bilangan yang kita cari ada ditemukan, maka kita keluar dari looping pencarian contoh : #include
using namespace std;
output :
binary search , pada metode pencarian ini, data harus Metode pencarian yang kedua adalah binary search diurutkan terlebih dahulu. Pada metode pencarian ini, data dibagi menjadi dua bagian (secara logika), untuk setiap tahap pencarian. Algoritma binary search : Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
107
1. Data diambil dari posisi 1 sampai posisi akhir N 2. Kemudian cari posisi data tengah dengan rumus: (posisi awal + posisi akhir) / 2 3. Kemudian data yang dicari dibandingkan dengan data yang di tengah, apakah sama atau lebih kecil, atau lebih besar? 4. Jika lebih besar, maka proses pencarian dicari dengan posisi awal adalah posisi tengah + 1 5. Jika lebih kecil, maka proses pencarian dicari dengan posisi akhir adalah posisi tengah – tengah – 1 6. Jika data sama, berarti ketemu. Contoh source binary search : #include using namespace std;
Output :
TUGAS : 1. Buatlah sebuah program yang dapat menerima inputan data kedalam sebuah array. 2. Lanjutan dari nomor 1, gunakan sequensial search untuk mencari sebuah nilai dari array tersebut, dan gantilah nilainya. 3. Coba gunakan metode pencarian lainnya 4. Buatlah menu untuk program tersebut (1. Sequential search, 2. Binary Search, 3. exit)
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
108
CONTOH PROGRAM :
#include typedef enum (false=0, true=1) bool ; using n amespace amespace std ;
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika
109
Output :
Atau ;
Struktur Data Struktur Data
Universitas Pamulang
Teknik Informatika Teknik Informatika