Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Linked List & POINTER Pertemuan POINTER

Presentasi serupa


Presentasi berjudul: "Linked List & POINTER Pertemuan POINTER"— Transcript presentasi:

1 Linked List & POINTER Pertemuan-13 1. POINTER
Merupakan sebuah variabel yang berisi alamat dari variabel lain. Suatu pointer dimaksudkan untu menunjukan ke suatu alamat memori sehingga alamat dari suatu variabel dapat diketahui dengan mudah.

2 a. Operator Pointer Terdapat dua macam operator pointer yang disediakan oleh Borland C++: Operator & Operator & bersifat unary yang berarti hanya memerlukan satu operand dan menghasilkan alamat dari operandnya 2. Operator * Operator * juga bersifat unary dan menghasilkan nilai yang berbeda pada sebuah alamat.

3 tipe_data *nama_variabel;
b. Mendefiniskan Variabel Pointer Untuk mendefinisikan suatu variabel pointer dapat anda lihat dibawah ini : tipe_data *nama_variabel; Contoh: int *a; atau int* a; char *ket; atau char* ket; /* */ /* Perubahan Nilai dengan Pointer */ #include<conio.h> #include<iostream.h> main() { int a = 93; int *b ; clrscr(); cout<<"Nilai awal a = "<<a<<endl; b = &a; *b = 50; cout<<"Nilai a sekarang = "<<a<<endl; getch(); }

4 c. Penggunaan Alokasi Memori
Pengalokasian memori secara dinamis dapat dilakukan dengan menggunakan operator new. Anda dapat dilihat pada program berikut gambaran tentang pengalokasian secara dinamis /* */ /* Alokasi Memori Dinamis */ #include<conio.h> #include<iostream.h> void main() { int *ptr_b ; // variabel pointer *ptr_b = new int; *ptr_b = 75; clrscr(); cout<<"Nilai *ptr_b = "<<*ptr_b<<endl; getch(); }

5 c. Penggunaan Alokasi Memori
Pengalokasian memori secara dinamis dapat dilakukan dengan menggunakan operator new. Anda dapat dilihat pada program berikut gambaran tentang pengalokasian secara dinamis /* */ /* Alokasi Memori Dinamis */ #include<conio.h> #include<iostream.h> void main() { int *ptr_b ; // variabel pointer *ptr_b = new int; *ptr_b = 75; clrscr(); cout<<"Nilai *ptr_b = "<<*ptr_b<<endl; getch(); }

6 2. Linked List ( Seranai Berantai ) a. Pengertian
Suatu kumpulan komponen yang disusun sevara berurutan dengan bantuan Pointer. Link List merupakan contoh struktur data sederhana yang menggunakan memori secara dinamis. Masing-masing komponen disebut dengan simpul ( Node ). Pada gambar diatas terdapat tiga buah simpul. Sebuah simpul menunjuk simpul terkiri dan setiap simpul mempunyai pointer yang menunjuk kesimpul berikutnya. Pointer pada simpul berikutnya. Pointer pada simpul terakhir tidak menunjuk kemana ( Berisi NULL ). Simpul Data Pointer

7 b. Penggunaan 1. Pendeklarasian Struktur Link List Pada contoh berikut ini simpul berisi nama dan no. telepon serta sebuah pointer bernama lanjutan yang menunjuk ke struktur dengan nama Simpul. struct simpul { char nama[35]; char telp[15]; simpul *lanjutan }

8 2. Class Link List Implementasi dari daftar link list dinyatakan dengan class dengan nama seranai. class seranai { private: simpul *pertama; simpul *pendahulu; simpul *cari(char *nama); public: seranai(); ~seranai(); int tambah(char *nama, char *telp); void tampil(); void tampil(char *nama); int hapus(char *nama); };

9 3. Program Utama void main() { clrscr() seranai daftar; daftar.tambah("Rinno", " "); daftar.tambah("Adi", " "); daftar.tambah("Imam", " "); daftar.tambah("Dedi", " "); daftar.tambah("Melly", " "); daftar.tampil(); daftar.tampil("Sollihin"); daftar.tampil("Maureen"); }

10 4. Constructor dan Destructor
Implementasi dari daftar link list dinyatakan dengan class dengan nama seranai. seranai::seranai() { pertama=NULL; } seranai::~seranai() //-> hapus seluruh simpul simpul *simpul_hapus; while (pertama != NULL) simpul_dihapus = pertama; pertama = pertama->lanjutan; delete simpul_dihapus;

11 5. Penambahan int seranai::tambah(char *nama, char *telp) { simpul *baru; baru = new simpul; if (baru) baru->lanjutan = pertama; strcpy(baru->nama, nama); strcpy(baru->telp, telp); pertama = baru return(1); } else return(0);

12 6. Menampilkan Per Nama void seranai::tampil(char *nama) { simpul *ptr_data = pertama; char data_nama[35]; char dicari[35]; strcpy(dicari, nama); strcpy(dicari); cout<<setiosflag(ios::left)<<setfill(’.’); cout<<endl<<"DAFTAR TELEPON" <<dicari <<" :" <<endl; while(ptr_data != NULL) strcpy(data_nama, ptr_data->nama); strcpy(data_nama); if(strstr(data_nama, dicari)) cout<<setw(36)<<ptr_data->nama <<ptr_data->telp<<endl; ptr_data = ptr_data->lanjutan; } cout<<resetiosflag(ios::left)<<setfill(’ ’);

13 7. Menampilkan Data Keseluruhan
void seranai::tampil() { simpul *ptr_data = pertama; cout<<setiosflag(ios::left)<<setfill(’.’); cout<<endl<<"DAFTAR TELEPON" <<endl; while(ptr_data != NULL) cout<<setw(36)<<ptr_data->nama <<ptr_data->telp<<endl; ptr_data = ptr_data->lanjutan; } cout<<resetiosflag(ios::left)<<setfill(’ ’);

14 8. Mencari simpul *seranai::cari(char *nama) { simpul *ptr_data = pertama; while(ptr_data != NULL) if(strcmp(nama, ptr_data->nama)==0) break; pendahulu = ptr_data; ptr_data = ptr_data->lanjutan; } return(ptr_data);

15 8. hapus int seranai::tambah(char *nama) { simpul *posisi_data; posisi_data = cari(nama); if (posisi_data == NULL) return(0); else if(pendahulu == NULL) pertama=pertama->lanjutan; } pendahulu->lanjutan = posisi_data->lanjutan; delete posisi_data; return(1);

16 Operator Overloading 1. Penjelasan
Operator Overloading adalah proses pendefinisian sifat dari sebuah tipe data baru yang sesuai dengan isi data dengan class. Kegunaan Overloading adalah untuk mempermudah operasi terhadap data, khusus yang melibatkan object. Sebuah operator dapat dan harus di overload sebelum digunakan dengan objek dari sebuah class.

17 Berikut beberapa operator yang dapat di overload
Tabel Operator Overloading Operator Overloading + - * / % ^ & | ~ ! = > < += -= *= /= %= ^= &= |= << >> <<= >>= == != <= >= && || ++ -- , ->* -> () []

18 2. Penerapan Overloading pada Operator Aritmatika.
#include<iostream.h> #include<fstream.h> #include<conio.h> class hardware { private: int mouse; int printer; public: hardware(int jml_mouse = 0, int jml_printer = 0); void ket_hardware(); hardware operator + (hardware h2); hardware operator - (hardware h2); hardware operator * (hardware h2); hardware operator / (hardware h2); hardware operator % (hardware h2); };

19 void main() { clrscr(); hardware hardware1(30, 10); hardware hardware2(13, 7); hardware hardware3; cout<<"Objek Hardware 1 "<<endl; hardware1.ket_hardware(); cout<<"Objek Hardware 2 "<<endl; hardware2.ket_hardware(); hardware3 = hardware1 + hardware2; cout<<"Hasil Penjumlahan "<<endl; hardware3.ket_hardware(); hardware3 = hardware1 - hardware2; cout<<"Hasil Pengurangan "<<endl; getche();

20 //-> Definsi anggota fungsi
hardware::hardware(int jml_mouse, int jml_printer) { mouse = jml_mouse; printer = jml_printer; } void hardware::ket_hardware() cout<<"Jumlah Mouse = "<<mouse<<" Printer = "<< printer<<'\n'<<endl; hardware hardware::operator + (hardware h2) hardware tmp; tmp.mouse = mouse + h2.mouse; tmp.printer = printer + h2.printer; return tmp; hardware hardware::operator - (hardware h2) tmp.mouse = mouse - h2.mouse; tmp.printer = printer - h2.printer;

21 3. Penerapan Overloading pada Operator Relasi dan Logika.
#include<iostream.h> #include<fstream.h> #include<conio.h> class harga { private: long hrgbrg; float diskon; public: harga(int = 0, float = 0.0); void ket_harga(); int operator < (harga); }; void main()

22 { clrscr(); harga brg1(20000, 15.0); harga brg2(20000, 10.0); harga brg3(20000, 25.0); if (brg1 < brg2) cout<<"Barang 1 Lebih Murah dari Barang 2"<<endl; else cout<<"Barang 1 Mahal dari pada Barang 2"<<endl; if (brg2 < brg3) cout<<"Barang 2 Lebih Murah dari Barang 3"<<endl; cout<<"Barang 2 Mahal dari pada Barang 3"<<endl; getche(); }

23 harga::harga(int hrg_brg, float potongan)
{ hrgbrg = hrg_brg; diskon = potongan; } void harga::ket_harga() cout<<"Harga Barang Rp. "<<hrgbrg<<endl; cout<<"Potongan Harga Rp. "<<diskon<<"%\n"<<endl; int harga::operator < (harga x) long hrg_brg=hrgbrg-(diskon/100)*hrgbrg; long hrgbrg_x=x.hrgbrg-(x.diskon/100) * x.hrgbrg; return((hrg_brg < hrgbrg_x) ? 1 : 0);

24 4. Penerapan Overloading pada Assignmen Operator.
Khusus untuk operator (=) merupakan operator yang mendapat perlakuan khusus, dan cara melakukan overloading juga berbeda terhadap operator yang lainnya. #include<iostream.h> #include<conio.h> #include<string.h> const int MAX_CHAR = 50; class kata { private: char ket[MAX_CHAR]; public: kata() //->constructor ke-1 strcpy(ket, ""); }

25 kata(char *k) //-> constructor ke-2
{ strcpy(ket, k); } void ket_kata() cout<<"Keterangan = "<<ket<<endl; }; void main() clrscr(); kata kampus; kampus.ket_kata(); kampus = "BSI CIPULIR"; getche();

26 5. Penerapan Overloading pada Operator ++ dan --.
#include<iostream.h> #include<fstream.h> #include<conio.h> class hardware { private: int mouse; int printer; public: hardware(int jml_mouse=0, int jml_printer=0); void ket_hardware(); void operator ++ (); void operator -- (); };

27 void main() { clrscr(); hardware unit(30, 8); cout<<"Jumlah Awal Hardware "<<endl; unit.ket_hardware(); ++unit; cout<<"Setelah di tambah 2 : "<<endl; --unit; cout<<"Setelah dikurang 1 : "<<endl; getche(); }

28 //-> Definsi anggota fungsi
hardware::hardware(int jml_mouse, int jml_printer) { mouse = jml_mouse; printer = jml_printer; } void hardware::ket_hardware() cout<<"Jumlah Mouse = "<<mouse<<" Printer = " <<printer<<'\n'<<endl; void hardware::operator ++ () ++mouse; ++printer; void hardware::operator -- () --mouse; --printer;


Download ppt "Linked List & POINTER Pertemuan POINTER"

Presentasi serupa


Iklan oleh Google