Linked List & POINTER Pertemuan POINTER

Slides:



Advertisements
Presentasi serupa
Single linked list.
Advertisements

STRUKTUR DATA (7) single linked list circular
STRUKTUR DATA (8.1) double linked list non circular
STRUKTUR DATA (5) Pointer dan Function
LINKED LIST.
Pointer.
LINKED LIST Single Linked List.
LINKED LIST.
Algoritma dan Struktur Data Daniel Riano Kaparang.
STRUKTUR DATA (6) single linked list non circular
Operasi pada pohon biner
STRUKTUR DATA (5) Pointer dan Function
Algoritma & Struktur Data Linked List Evangs Mailoa.
Pointer Dr. Lily Wulandari.
POINTER (VAR.PENUNJUK)
LINKED LIST by Yohana N.
Struktur Data List Linear : Linked List (Double Linkedlist)
STRUKTUR DATA Pointer dan Function
P O I N T E R. Merupakan sebuah variabel yang berisi alamat dari variabel lain. Suatu pointer dimaksudkan untu menunjukan ke suatu alamat memori sehingga.
Pertemuan ketujuh Struktur data st3telkom.ac.id
Friend. Adalah fungsi bukan anggota kelas yg dapat mengakses anggota kelas. Secara umum friend berguna jika terdapat suatu operasi yg hendak mengakses.
Struktur Data List Linear : Linked List (Single Linkedlist)
POINTER.
LINKED LIST.
Struktur Data (Data Structure) – IS 2313
Algoritma dan Struktur Data
Array BY HARIFUDDIN. Pendahuluan  Array adalah sebuah variabel yang menyimpan sekumpulan data yang memiliki tipe yang sama  Setiap data menempati lokasi.
// Contoh program c++ dengan fungsi template
ARRAY Array merupakan struktur data yang sering digunakan dalam pemrograman untuk menyimpan data yang akan diolah.
INHERITANCE & POLIMORPHISME Pertemuan Inheritance
12.Objek S. Indriani L, M.T 12. Objek.
8. Pointer S. Indriani L, M.T 8. Pointer.
STRUKTUR DATA Linked List Oleh : Yuli Praptomo PHS, S.Kom.
Elemen Dasar C Identifier :
8. Singly Linear Linked List
Single Linked List.
Informatique Engineering Ahmad Dahlan University May 17, 2004
PERTEMUAN 3 KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER
3. Elemen Dasar C++ S. Indriani L., M.T 3. Elemen Dasar C++
12. Doubly Linear Linked List
KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER
Algoritma dan Struktur Data
POINTER
10. Kelas S. Indriani L, M.T.
S T R U K T U R.
Variabel ARRAY.
Struktur.
POINTER (VAR.PENUNJUK)
11. Singly Circular Linked List
Pointer Pertemuan 10 Bahasa C.
Pointer FARID WAJDI YUSUF.
P O I N T E R.
Pointer Oleh : Sri Supatmi,S.Kom.
S. Indriani Lestariningati, M.T
Elemen-elemen Dasar Pada Bahasa C++
Melda Dahoklory,S.Kom,MT
Tenia Wahyuningrum pointers Tenia Wahyuningrum
QUIS Algoritma Pemrograman I
Algoritma dan Struktur Data
6. Array S. Indriani L, M.T.
Pointer Oleh : Sri Supatmi,S.Kom.
KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER
Konstruktor dan Destruktor
Array.
POINTER (VAR.PENUNJUK)
LINKED LIST (SENARAI BERANTAI)
Pertemuan 3 Input/output Statement Assignment Statement
Variable Static & Linked List
POINTER
Pointer.
Transcript presentasi:

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.

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.

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(); }

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(); }

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(); }

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

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 }

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); };

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

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;

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);

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(’ ’);

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(’ ’);

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);

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);

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.

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

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); };

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();

//-> 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;

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()

{ 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(); }

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);

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, ""); }

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();

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 -- (); };

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(); }

//-> 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;