Informatique Engineering Ahmad Dahlan University May 17, 2004

Slides:



Advertisements
Presentasi serupa
Stack, Larik dan Pointer
Advertisements

POINTER.
PERTEMUAN IV POINTER Pointer adalah suatu variabel penunjuk yang menunjuk pada suatu alamat memori komputer Pointer merupakan.
Single linked list.
STRUKTUR DATA (7) single linked list circular
STRUKTUR DATA (8.1) double linked list non circular
STRUKTUR DATA (5) Pointer dan Function
Pointer. Output? #include int x = 2; void misteri(int a, int b) { a = 2*x; b = y; y = a; } main() { int y; x = 5; y = 7; misteri(x, y); printf("%d %d\n",
Pointer.
LINKED LIST Single Linked List.
LINKED LIST.
LINK LIST Latifah Rifani.
Algoritma dan Struktur Data Daniel Riano Kaparang.
POINTER
Pointer Variabel pointer sering disebut sebagai variabel yang menunjuk obyek lain, karena variabel pointer atau pointer adalah variabel yang berisi alamat.
Algoritma & Struktur Data Pointer Evangs Mailoa.
STRUKTUR DATA (6) single linked list non circular
STRUKTUR DATA (5) Pointer dan Function
Alokasi Memori Yuliana Setiowati.
BY YOHANA N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked- lis... 1 LINKED LIST.
Pointer Memory Dinamic.
Pemrograman Dasar Pointers.
Algoritma & Struktur Data Linked List Evangs Mailoa.
Pointer Dr. Lily Wulandari.
POINTER (VAR.PENUNJUK)
Pertemuan 22 POINTER Bag.2 Dasar Pemrograman Renni Angreni, S.Kom.
LINKED LIST by Yohana N.
Pemrograman Berorientasi Obyek1 Sub Pokok Bahasan Array of class. Array Class. Pointer of class. Dynamic Memory Management.
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.
Pemrograman Berorientasi Obyek1 Sub Pokok Bahasan Pointer. Reference. Function Passing Parameter by Value, by Reference, by Pointer.
Pointer.
Struktur Data List Linear : Linked List (Single Linkedlist)
POINTER.
LINKED LIST.
Teknik Pemrog. Terstruktur 2
Tenia Wahyuningrum pointers Tenia Wahyuningrum
POINTER Bag.2 Pertemuan 22 Dibuat oleh : Renni Angreni, S.Kom. Triana Elizabeth, S.Kom.
Linked List.
Algoritma dan Struktur Data
SET/HIMPUNAN PADA PASCAL
Pertemuan Linked list jual [Valdo] Lunatik Chubby Stylus.
Linked List & POINTER Pertemuan POINTER
STRUKTUR DATA Linked List Oleh : Yuli Praptomo PHS, S.Kom.
STRUKTUR DATA Linked List
Pemrograman Terstruktur
8. Singly Linear Linked List
12. Doubly Linear Linked List
Pointer TEE 2103 Algoritma dan Pemrograman Dosen: Abdillah, MIT
REPRESENTASI FISIK LIST LINEAR
Algoritma dan Struktur Data
POINTER
Pointer Variabel pointer sering disebut sebagai variabel yang menunjuk obyek lain, karena variabel pointer atau pointer adalah variabel yang berisi alamat.
Struktur.
Defri Kurniawan, M.Kom STRUKTUR DATA Defri Kurniawan, M.Kom
11. Singly Circular Linked List
Pointer FARID WAJDI YUSUF.
ALGORITMA DAN PEMROGRAMAN II
Tenia Wahyuningrum pointers Tenia Wahyuningrum
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Variable Static & Linked List
Pointer.
SINGLE LINKED LIST (SLL)
BY EMI SITA POINTER BY EMI SITA. POINTER VS VARIABLE Berisi nilai data Operasi yang dipakai bengan operator *,/,+,- Bersifa t statis Deklarasi int x Berisi.
Transcript presentasi:

Informatique Engineering Ahmad Dahlan University May 17, 2004 Pointer Informatique Engineering Ahmad Dahlan University May 17, 2004

Pendahuluan Pointer merupakan salah satu jenis data terstruktur Dengan menggunakan pointer, suatu variabel dapat diciptakan atau dihapus selama pengeksekusian program,  variabel (objek) dinamis Untuk membuat struktur data dinamis : link list, queue, stack, tree  ukurannya menjadi fleksibel

Pointer variabel yang menunjuk alamat memory objek lain (menyimpan alamat dari suatu objek variabel pointer bukan berisi data

Objek Statis vs Objek Dinamis memori diperoleh secara otomatis memori dikembalikan secara otomatis bila objek keluar dari ruang lingkup tertentu (fungsi, sebagai contoh) int A[10]; // tertentu banyaknya Dinamis memori diperoleh dari operasi new objek dinamis masih ada (exist) di luar fungsi di mana “dia” dialokasikan objek di memori hanya dapat dihapus dengan operasi delete int n; cin >> n; int *A = new int[n];

Memori Untuk Objek Dinamis Diminta dari free memory (dikontrol sistem operasi) Permintaan memori harus ditentukan : tipe dan banyaknya objek Jika memori tersedia : pointer ke memori akan dikembalikan Jika tidak tersedia : pointer null akan dikembalikan

Definisi Variabel Pointer Pointer yang menunjuk objek bertipe int  int *A; Pointer yang menunjuk objek bertipe char  char *B; Pointer yang menunjuk objek yang tipenya didefinisikn sendiri  Mahasiswa *Ahmad;

Cara penulisan pada C++ Contoh pointer yang tidak diberi nilai awal int *iPtr; // iPtr pointer menunjuk objek bertipe int char *s; // s pointer menunjuk objek bertipe char Rational *rPtr; // rPtr pointer menunjuk objek Rational Contoh pointer yang diberi nilai awal int i = 1; char c = 'y'; int *ptr; // ptr pointer menunjuk objek bertipe int ptr = &i; // ptr pointer menunjuk ke alamat i char *t; // t pointer menunjuk objek bertipe char t = &c; // t pointer menunjuk ke alamat c

Gambaran Pointer int i = 1; char c = 'y'; int *ptr = &i; char *t; t = &c ptr i ‘y’ c 1 t

”This” dan “That” pointer box dapat diibaratkan sebagai “this” (tanpa tanda star) Kotak yang ditunjuk sebagai “that” (bintang) int i = 1; int j = 2; int *p; // p pointer ke int p = &i; // "this" = alamat dari i *p = 3; // "that" = 3 p = &j; // "this" = alamat dari j *p = 4; // "that" = 4 i 1 j 2 p this i 3 that j 2 p this i 3 j 4 that p this

Indirection Operator Tanda * menunjukkan bahwa : char *kata; Suatu objek merupakan pointer char *kata; * sebelum variabel bahwa yang diinginkan adalah “that” (isi/objek yang ditunjuk) int i = 1, j; int *ptr; // ptr pointer ke int ptr = &i; // ptr menunjuk i j = *ptr + 1; // *ptr  1, sehingga j 2 cout << *ptr << j << endl; // menampilkan : 12 (satu dua bukan dua belas)

Alamat Null null (= 0) adalah konstan pointer untuk suatu tipe tertentu menunjukkan bahwa pointer belum menunjuk ke objek tertentu tidak dapat merujuk kembali (de-reference) int *ptr; ptr = NULL; cout << *ptr << endl; // invalid, ptr tidak menunjuk // ke int yang valid

Member Indirection Pertimbangkan : Memilih anggota secara langsung : Rational r(4,3); Rational *rPtr = &r; Memilih anggota secara langsung : (*rPtr).Tampilkan(); Memilih anggota melalui pointer : rPtr->Tampilkan();

Perbandingan Penggunaan Penggunaan pass by reference void Tukar(char& y, char& z) { char temp = y; y = z; z = temp; } int main() { char a = 'y'; char b = 'n'; Tukar(a, b); cout << a << b << endl; return 0; Penggunaan secara tradisional void Tukar(char* y, char* z) { char temp = *y; *y = *z; *z = temp; } int main() { char a = 'y'; char b = 'n'; Tukar(&a, &b); cout << a << b << endl; return 0;

Aplikasi : Link List class Node { Node *B = new Node; public: int data; Node *berikut; }; //perintah Node *A = new Node; A->data = 1; A->berikut = 0; Node *B = new Node; B->data = 2; B->berikut = 0; A->berikut = B; 1 1 A 2 B 1 A

Bagaimana mengetahui isi list? (1) Asumsi : 1 A 2 jalan 1 A 2 Node *jalan = A; while(jalan != 0) { cout << "Isi elemen : " << jalan->data << endl; ...??? } Output : Isi elemen : 1 1 A 2 jalan

Bagaimana mengetahui isi list? (2) Asumsi : 1 A 2 1 A 2 jalan Node *jalan = A; while(jalan != 0) { cout << "Isi elemen : " << jalan->data << endl; jalan = jalan->berikut; } * Output : Isi elemen : 1 Isi elemen : 2 jalan jalan 1 A 2

Bagaimana mengetahui isi list? (3) Asumsi : 1 A 2 ? 1 A 2 ? jalan Node *jalan = A; while(jalan != 0) { cout << "Isi elemen : " << jalan->data << endl; jalan = jalan->berikut; } * * Output : Isi elemen : 1 Isi elemen : 2 Stop !!! jalan 1 A 2 ? ?

Menghapus elemen pertama (1) Asumsi : Node *hapus = new Node; hapus = A; 1 1 A 2 ? 1 1 A 2 ? hapus

Menghapus elemen pertama (2) Asumsi : Node *hapus = new Node; hapus = A; A = A->berikut; 1 2 1 A 2 ? 1 hapus 1 2 ? 2 A

Menghapus elemen pertama (3) Asumsi : Node *hapus = new Node; hapus = A; A = A->berikut; delete hapus; 1 2 1 A 2 ? 3 1 3 hapus 1 2 ? 2 A

Menghapus elemen terakhir (1) Asumsi : Node *hapus = new Node; hapus = A->berikut; 1 1 A 2 ? 1 hapus 1 A 2 ?

Menghapus elemen terakhir (2) Asumsi : Node *hapus = new Node; hapus = A->berikut; delete hapus; 1 1 A 2 ? 2 1 2 hapus 1 A 2 ?

Menghapus elemen terakhir (3) Asumsi : Node *hapus = new Node; hapus = A->berikut; delete hapus; A->berikut = 0; 1 1 A 2 ? 2 3 1 2 hapus 1 A 2 ? 3

Latihan Buatlah algoritma untuk menyalin seluruh elemen sebuah link list. Buatlah algoritma untuk menyalin seluruh elemen sebuah link list yang genap. Buatlah algoritma untuk menghapus seluruh elemen sebuah link list yang genap.