Anda di halaman 1dari 24

Hasya M luiz

yonatan
Queue Pointer

Stack Linked List


Pointer
Sesuatu fasilitas yang tersedia dalam C++ yang tidak ditemukan pada bahasa
pemrogaman lainnya adalah pointer, dengan pemanfaatan pointer programmer dapat
melakukan manipulasi memori secara langsung.Pointer adalah sebuah objek yang
dapat digunakan untuk mengakses objek lainnya.
Sebuah pointer menyediakan akses tidak langsung terhadap objek.Pada dasarnya
manusia telah menggunakan pointer pada dunia nyata setiap saat.Sangat banyak
contoh yang dapat kita lihat.Misalnya saja pada saat seorang dosen mengatakan,
“Kerjakan Tugas 1.1 di buku,” telah terjadi penugasankepada mahasiswa secara tidak
langsung.Contoh lainya adalah sebuah URL (Uniform Resource Locator), seperti
http://www.sebarkan.com juga merupakan sebuah pointer.URL tersebut
memberitahukan lokasi halaman web tersebut. Jika halaman web pindah, maka URL
tidak berlaku lagi dan menunjuk ke halaman yang sudah tidak ada. Oleh karena itu
pengetahuan yang banyak tentang pointer akan sangat membantu bagi seseorang yang
ingin mempelajari bahasa C/C++.

Back Next
Operator pada pointer

Operator pada pointer terbagi menjadi dua, yaitu :


2.2.1 Operator *
Operator * disebut operator Unary (hanya memerlukan satu operand
saja) yang menghasilkan nilai variable dari suatu variabel alamat.
2.2.2 Operator &
Operator & disebut Operator Unary (hanya memerlukan satu operator
and saja) yang menghasilkan alamat darisuatu variabel.
2.2.3 Deklarasi Pointer
Sama seperti variabel, pointer juga harus dideklarasikan dahulu sebelum
digunakan. Bentuk umum deklarasi pointer adalah sebagi berikut :
Type_data *nama_pointer;

Back Next
Operasi Aritmatika
Variabel pointer dapat ditambah atau dikurangi dengan nilai
integer.Operasi penambahan dengan suatu nilai integer merupakan suatu
peningkatan nilai pointer yang menunjukkan lokasi data berikutnya di
memori. Misalnya pointer X menyimpan alamat 1000, maka :

 Jika x adalah int, maka p++ akan menunjuk alamat 1002 (karena int
berukuran 2 byte).
 Jika X adalah char, maka p++ akan menunjuk alamat 1001 (karena ukuran
char adalah 1 byte).

Back Next
Contoh 1 Program Operasi Aritmatika
#include
void main()
{
int a[4]={10,20,30,40};
int *pa;
pa = a;
printf("pa = %d\n",pa);
printf("pa++ = %d\n",++pa);
}
#include
void main()
{
int a[4]={10,20,30,40};
int *p1,*p2;
p1 = &a[0];
p2 = &a[2];
printf("%d\n",p2-p1);

}
Back Next
Operasi Logika Contoh_2 Operasi Logika
Dua variabel pointer dapat dibandingkan #include 'iostream.h'
jika keduanya mempunyai type yang sama. #include "conio.h"
Contoh_1 Operasi Logika void main()
#include {
void main() int a = 100, b = 200, *pa, *pb;
{ clrscr();
int bil1=100,bil2=100,*pb1,*pb2,*pb3; pa = &a;
pb1 = &bil1; pb = &b;
pb2 = &bil2; cout<<"nilai pa= "< if(pa < pb)
pb3 = pb1; cout<<"pa menunjuk ke memori lebih
if (pb1>pb2) rendah dari pb\n";
puts("Alamat pb1 lebih rendah deri pb2."); if(pa == pb)
else cout<<"pa menunjuk ke memori yang
puts("Alamat pb1 lebih tinggi dari pb2."); sama dengan pb\n";
if (pb1==pb3) if(pa > pb)
puts ("Alamat pb1 sama dengan pb3"); cout<<"pa menunjuk ke memori lebih
else tinggi dari pb\n";
puts ("Alamat pb1 tidak sama dengan getch();
Back } Next
pb3");
CONTOH APLIKASI PADA POINTER

Salah satu penggunaan pointer adalah untuk membuat suatu array yang
dinamis (banyaknya data yang bisa ditampung sesuai keperluan). Sebagaimana
kita ketahui jika kita membuat suatu program yang dapat menampung data
nilai sebanyak 5 buah maka kita akan membuat suatu variabel array yang
bertipe int dengan perintah int data[5]. Dengan cara begitu maka program
hanya akan berjalan dengan baik jika data yang diinputkan banyaknya di
kurang atau sama dengan 5 buah. Apa yang terjadi ketika data yang akan
diinputkan ternyata 10 buah, maka langkah yang dilakukan adalah harus
mengubah programnya dan mengganti int data[5] menjadi int data[10].
Cara lain untuk membuat program tersebut adalah dengan menggunakan suatu
variabel array yang dinamis dimana pemesanan tempat yang diperlukan untuk
menyimpan data tidak dideklarasikan dalam program tapi dilakukan secara
runtime (ketika program berjalan).
Back Next
BAHAYA POINTER
Bahaya yang mungkin ada dengan pointer sebagai moniker:
memory leak, double delete, invalid memory access. Semuanya
dapat dihindari dengan ownership analysis yang bagus (pada
setiap saat, harus diketahui pihak mana yang bertanggung
jawab mendelete sebuah object). Jika hal ini sulit dilakukan,
misalnya karena shared ownership, anda dapat menggunakan
smart pointer atau garbage collector .
1. Bahaya yang mungkin ada dengan pointer sebagai iterator:
array out of bound. Salah satu carayang efektif
menghindari hal ini adalah dengan menggunakan standard
algorithm.
Back 2. Bahaya yang mungkin ada dengan pointer sebagai
Next
QUEUE ATAU ANTRIAN
Queue/Antrian adalah ordered list dengan penyisipan di satu ujung, sedang penghapusan di ujung lain.
Ujung penyisipan biasa disebut rear/tail, sedang ujung penghapusan disebut front/head. Fenomena yang
muncul adalah elemen yang lebih dulu disisipkan akan juga lebih dulu diambil. Queue berdisiplin FIFO
(First In, First Out). Queue merupakan kasus khusus ordered list. Dengan karakteristik terbatas itu maka
kita dapat melakukan optimasi representasi ADT Queue untuk memperoleh kerja paling optimal.
Karakteristik Queue memang terbatas, tetapi Queue merupakan kakas dasar penyelesaian masalah-masalah
besar, seperti simulasi fenomena antrian di dunia nyata, serta fenomena antrian di pengolahan data.
Beberapa fenomena dunia nyata berupa antrian diantaranya : antrian pembelian tiket di depan loket untuk
bis, kereta api, bioskop; antrian mobil di depan gerbang jalan tol; antrian kendaraan di jalanan umum; dll.  
1. Representasi Queue dapat dilakukan dengan empat cara, yaitu:
2. Representasi Sekuen
3. Representasi Sekuen linear
4. Representasi Sekuen Melingkar
5. Representasi Dinamis 
Pembahasan Representasi sekuen menggunakan array pada setiap pengoprasiannya, sedangkan
Representasi dinamis  biasanya menempati memori berupa Record keduanya dideklarasikan menggunakan
bahasa pemograman pascal.

Back Next
 Karakteristik Queue atau antrian :
 1. elemen antrian
 2. front (elemen terdepan antrian)
 3. tail (elemen terakhir)
 4. jumlah elemen pada antrian
 5. status antrian
  
 Operasi pada Queue atau antrian
 1. tambah(menambah item pada belakang antrian)
 2. hapus (menghapus elemen depan dari antrian)
 3. kosong( mendeteksi apakah pada antrian mengandung elemen atau tidak)

Back Next
Operasi-operasi Queue :
1. Create()
Untuk menciptakan dan menginisialisasi
Queue. Dengan cara membuat Head dan
Tail = -1

Back Next
2. IsEmpty()
Untuk memeriksa apakah Antrian sudah penuh atau
belum. Dengan cara memeriksa nilai Tail, jika Tail =
-1 maka empty kita tidak memeriksa Head, karena
Head adalah tanda untuk kepala antrian (elemen
pertama dalam antrian) yang tidak akan berubah-
ubah. Pergerakan pada Antrian terjadi dengan
penambahan elemen Antrian kebelakang, yaitu
menggunakan nilai Tail.

Back Next
4. Enqueue
Untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di
elemen paling belakang
Penambahan elemen selalu menggerakan variabel Tail dengan cara increment counter Tail
terlebih dahulu

5. Dequeue()
Digunakan untuk menghapus elemen terdepan/pertama (head)
dari Antrian. Dengan cara menggeser semua elemen antrian
kedepan dan mengurangi Tail dgn 1.Penggeseran dilakukan
dengan menggunakan looping.

Back Next
6. Clear()
Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan
Head = -1
Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya,
namun hanya mengeset indeks pengaksesan-nya ke nilai -1 sehingga elemen-
elemen Antrian tidak lagi terbaca.

7. Tampil()
Untuk menampilkan nilai-nilai elemen Antrian
Menggunakan looping dari head s/d tail.

Back Next
STACK ATAU TUMPUKAN
Stack atau tumpukan adalah bentuk khusus dari linear list. Pada
stack, penghapusan serta pemasukan elemennya hanya dapat
dilakukan di satu posisi, yakni posisi akhir dari list. Sistem pada
pengaksesan pada tumpukan menggunakn system LIFO (Last In
First Out), artinya elemen yang terakhir masuk itu yang akan
pertama dikeluarkan dari tumpukan (Stack). Ilustrasi tumpukan
(Stack) dapat digambarkan seperti tumpukan CD atau tumpukan
sate. Stack merupakan suatu susunan koleksi data dimana dapat
ditambahkan dan dihapus selalu dilakukan pada bagian akhir
data, yang disebut dengan Top Of Stack.

Back Next
Operasi pada Stack
Operator CREATE(S) adalah operator yang menyebabkan stack S
menjadi satu stack hampa. Jadi NOEL(CREATE(S)) adalah 0, dan
TOP(CREATE(S)) tak terdefinisi.
Operator ISEMPTY(S) bermaksud memeriksa apakah stack S
hampa atau tidak. Operandnya adalah data bertipe stack,
sedangkan hasilnya merupakan data bertipe boolean.
ISEMPTY(S) adalah true, jika S hampa, yakni bila NOEL(S) = 0,
dan false dalam hal lain. Jelas bahwa ISEMPTY(CREATE(S))
adalah true.
Operator PUSH (E,S) akan bekerja menambahkan elemen E pada
stack S. E ditempatkan sebagai TOP(S).
POP(S) merupakan operator yang bekerja mengeluarkan elemen
Back TOP(S) dari dalam stack. POP(S) akan mengurangi nilai NOEL(S)
Next
LINKED LIST
Linked List atau dikenal juga dengan sebutan senarai
berantai adalah struktur data yang terdiri dari urutan
record data dimana setiap record memiliki field yang
menyimpan alamat/referensi dari record selanjutnya
(dalam urutan). Elemen data yang dihubungkan dengan
link pada Linked List disebut Node. Biasanya didalam
suatu linked list, terdapat istilah head dan tail. 
 Head adalah elemen yang berada pada posisi pertama
dalam suatu linked list
 Tail adalah elemen yang berada pada posisi terakhir
dalam suatu linked list Next
Back
SINGle Linked List
Single Linked List merupakan suatu linked list
yang hanya memiliki satu variabel pointer saja.
Dimana pointer tersebut menunjuk ke node
selanjutnya. Biasanya field pada tail menunjuk ke
NULL.

Back Next
DOUBle Linked List
Double Linked List merupakan suatu linked list
yang memiliki dua variabel pointer yaitu pointer
yang menunjuk ke node selanjutnya dan pointer
yang menunjuk ke node sebelumnya. Setiap head
dan tailnya juga menunjuk ke NULL.

Back Next
CIRCULAR Linked List
Circular Linked List merupakan suatu linked
list dimana tail (node terakhir) menunjuk ke head
(node pertama). Jadi tidak ada pointer yang
menunjuk NULL. Ada 2 jenis Circular Linked
List, yaitu :
Circular Single Linked List Circular Double Linked
List

Back Next
MULTIPLE Linked List
Multiple Linked List merupakan suatu
linked list yang memiliki lebih dar 2 buat
variabel pointer. 

Back Next
SEKIAN DAN TERIMAKASIH
KOLOM PERTANYAAN

Back Next

Anda mungkin juga menyukai