Selasa, 26 Juni 2012

MODUL VIII

QUEUE

Jika diartikan secara harafiah, 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 :
Create              Menciptakan dan Menginisialisasi Queue dengan cara membuat Head dan Tail = -1
EnQueue         Memasukkan data ke dalam antrian
DeQueue         Mengeluarkan data terdepan dari antrian
Clear                Menghapus seluruh antrian
IsEmpty          Memeriksa apakah antrian kosong
IsFull               Memeriksa apakah antrian penuh


Create
Digunakan untuk membentuk dan menunjukan awal terbentuknya suatu Antrian / Queue.
IsEmpty
Fungsi IsEmpty berguna untuk mengecek apakah queue masih kosong atau sudah berisi
data. hal ini dilakukan dengan mengecek apakah tail bernilai -1 atau tidak. Nilai -1 menandakan bahwa queue masih kosong.





 
IsFull
Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bisa
menampung data dengan cara mengecek apakah nilai tail sudah sama dengan jumlah
maksimal queue. Jika nilai keduanya sama, berarti queue sudah penuh.

EnQueue
Fungsi EnQueue berguna untuk memasukkan sebuah elemen dalam queue dari belakang

 
DeQueue
Fungsi DeQueue berguna untuk mengambil sebuah elemen dari queue. Operasi ini
sering disebut juga serve. Hal ini dilakukan dengan cara memindahkan sejauh satu
langkah ke posisi di depannya sehingga otomatis elemen yang paling depan akan
tertimpa dengan elemen yang terletak di belakangnya.

Clear
Fungsi Clear berguna untuk menghapus semua lemen dalam queue dengan jalan
mengeluarkan semua elemen tersebut satu per satu hingga queue kosong dengan
memanfaatkan fungsi DeQueue.

Listing Program 8.1 untuk Borlan

lanjutan

 Output Listing Program 8.1 untuk Borlan

Lanjutan
Lanjutan
Lanjutan



Sabtu, 16 Juni 2012

MODUL VII


 STACK


Stack bisa diartikan sebagai suatu kumpulan data yang seolah-olah ada data yang diletakkan di atas data yang lain. Di dalam stack, kita dapat menambahkan/menyisipkan dan mengambil/menghapus data melalui ujung yang sama yang disebut sebagai puncak
stack (top of stack). Stack mempunyai sifat LIFO (Last In First Out), artinya data yang terakhir masuk adalah data yang pertama keluar. Bentuk penyajian stack bias menggunakan tipe data array, tetapi sebenarnya penyajian stack menggunakan array kurang tepat karena banyaknya elemen dalam array bersifat statis, sedangkan jumlah elemen stack sangat bervariasi atau dinamis. Meskipun demikian, array dapat digunakan untuk penyajian stack, tetapi dengan anggapan bahwa banyaknya elemen maksimal suatu stack tidak melebihi batas maksimum banyaknya array. Pada suatu saat ukuran stack akan sama dengan ukuran array. Bila diteruskan menambah data, maka akan terjadi overflow. Oleh karena itu, perlu ditambahkan data untuk mencatat posisi ujung stack.
Operasi-operasi STACK :
Push                Untuk menambahkan item pada tumpukan paling atas
Pop                  Untuk mengambil item teratas
Clear               Untuk mengosongkan stack
IsEmpty          Untuk memeriksa apakah stack kosong
IsFull               Untuk memeriksa apakah stack sudah penuh

Push
Fungsi ini menambahkan sebuah elemen ke dalam stack dan tidak bias dilakukan lagi jika stack sudah penuh.
Pop
Fungsi ini mengambil elemen teratas dari stack dengan syarat stack tidak boleh kosong.
Clear
Fungsi ini mengosongkan stack dengan cara mengeset Top dengan -1. Jika Top bernilai kurang dari nol maka stack dianggap kosong.


IsEmpty
Fungsi menentukan apakah stack kosong atau tidak. Tanda bahwa stack kosong adalah Top bernilai kurang dari nol.
IsFull
Fungsi ini memeriksa apakah stack yang ada sudah penuh. Stack penuh jika stack penuh jika puncak stack terdapat tepat dibawah jumlah maksimum yang dapat ditampung stack atau dengan kata lain Top = MAX_STACK -1.


Program 7.1 untuk Borlan

 Lanjutan 
Lanjutan
Output Progrsm 7.1 untuk Borlan



lajutan
 lanjutan

 Program 7.1 untuk eclips




















lanjutan
lanjutan


lanjutan




Perbedaan antara program eclip dan program pada borlan adalah dimana pada borlan midakenggunakan hider #include <conio.h> sedangkan di eclips tidak menggunakan hide tersebut
Pada akhir program untuk Borlan ada getche ();,sedangkan pada eclips tidak ada,serta program pada eclips menggunakan using namespace std;

















Output program 7.1 untuk eclips
Lanjutan
 




Senin, 04 Juni 2012

MODUL VI

LINKED  LIST

Linked list adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian. Linked adalah koleksi obyek heterogen dengan sifat setiap obyek (kecuali obyek terakhir) mempunyai penerus dan setiap obyek (kecuali obyek pertama) mempunyai pendahulu. Salah satu penggunaan pointer adalah untuk membuat linked list atau senarai berantai. Linked list sendiri dapat diartikan sebagai sekumpulan komponen yang saling berhubungan (berantai) dengan bantuan pointer.

PEMBUATAN SINGLE LINKED LIST
Deklarasi node
Dibuat dari struct berikut ini:



struc node{

      int data;
      node *next;
};



Penjelasan:
- Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data bertipe integer dan field next yang bertipe pointer dari TNode
- Setelah pembuatan struct, buat variabel haed yang bertipe pointer dari TNode yang berguna sebagai kepala linked list.
Pembentukan node baru
Digunakan keyword new yang berarti mempersiapkan sebuah node baru berserta alokasi

  memorinya, kemudian node tersebut diisi data dan pointer nextnya ditunjuk ke NULL






node *baru;
baru = new node;
baru->data =databaru;
baru->next =NULL;





SINGLE LINKED LIST MENGGUNAKAN HEAD
- Dibutuhkan satu buah variabel pointer: head
- Head akan selalu menunjuk pada node pertama




 Deklarasi Pointer Penunjuk Kepala Single Linked List Manipulasi linked list tidak bisa
dilakukan langsung ke node yang dituju, melainkan harus menggunakan suatu pointer
penunjuk ke node pertama dalam linked list (dalam hal ini adalah head). Deklarasinya

sebagai berikut:
TNode *head;


Fungsi inisialisasi single Linked List
void int (){
    head = NULL;
}


Function untuk mengetahui kosong tidaknya Single LinkedList Jika pointer head tidak
menunjuk pada suatu node maka kosong




PENAMBAHAN DATA
Penambahan data di depan
Penambahan node baru akan dikaitan di node paling depan, namun pada saat pertama kali (data masih kosong), maka penambahan data dilakukan dengan cara head ditunjukkan ke node baru tersebut. Pada prinsipnya adalah mengkaitkan node baru dengan head, kemudian head akan menunjuk pada data baru tersebut sehingga head akan tetap selalu menjadi data terdepan.

void insertDepan(int databaru){
    node *baru;
    baru =new node;
baru->data = databaru;
baru ->next =NULL;

if((isEmpty()==1){
   haead=baru;
   head->next = NULL;
}
else{
   baru->next =head;
   head = baru;
}
cout<<"data masuk\n";
}

MENAMPILKAN DATA
Function untuk menampilkan isi single linked list (non circular)


void tampil(){
   node *bantu;
   bantu = head;
   if((isEmpty()==0){
     while(bantu!=NULL){
       cout<<bantu->data<<" ";
       bantu=bantu->next;
}
cout<<endl;
}else cout<<"masih kosong\n";
}


- Function di atas digunakan untuk menampilkan semua isi list, di mana linked list ditelusuri satu-persatu dari awal node sampai akhir node. Penelusuran ini dilakukan dengan menggunakan suatu pointer bantu, karena pada prinsipnya pointer head yang menjadi tanda awal list tidak boleh berubah/berganti posisi.
- Penelusuran dilakukan terus sampai node terakhir ditemukan menunjuk ke nilai NULL. Jika tidak NULL, maka node bantu akan berpindah ke node selanjutnya dan membaca isi datanya dengan menggunakan field next sehingga dapat saling berkait.
- Jika head masih NULL berarti data masih kosong!

PENGHAPUSAN DATA
Function untuk menghapus data terdepan

void hapusDepan (){
   node *hapus;
  int d;
  if ((isEmpty()==0){
  if((head->next  NULL){
      hapus = head;
      d = hapus->next;
      delete=hapus;
}else{
   d= head->data;
   head = NULL;
}
cout<<d<<" terhapus\n";
}else cout<<"masih kosong\n";
}


Function di atas akan menghapus data teratas (pertama) yang ditunjuk oleh head pada
linked list
- Penghapusan  node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh
pointer, maka harus dilakukan penggunakan suatu pointer lain yang digunakan
untuk menunjuk node yang akan dihapus, misalnya pointer hapus dan barulah
kemudian menghapus pointer hapus dengan menggunakan perintah delete.
- Sebelum data terdepan dihapus, head harus ditunjukkan ke node sesudahnya
terlebih dahulu agar list tidak putus, sehingga node setelah head lama akan
menjadi head baru (data terdepan yang baru).
- Jika head masih NULL maka berarti data masih kosong!
 

 Program 6.1 untuk Borlan 



 Lanjutan


Output Program



Program 6.1 untuk eclips

 Output program 6.1 untuk eclips
Perbedaan antara program untuk borlan dan eclips


Jika diBorlan library seperti :
#include <iostream>
#include <list>
#include<malloc>
#include<conio>
memakai ( .h ) serta menggunakan #include <conio.h>,karena untuk menampilkan getche();
jika di eclips tudak memakai  (.h),dan tidak memakai #include<conio.h>,melainkan memakai using namespace std;






Program 6.2 untuk borlan


lanjutan
lanjutan
Output Program 6.2 untuk Borlan
Program 6.2 untuk eclips


lanjutan
lanjutan
lanjutan
Output Program 6.2 untuk eclips
Perbedaan Program 6.2 untuk borlan dan eclips
Jika diBorlan library seperti :
#include <iostream>
#include <list>
#include<malloc>
#include<conio>

ditambah dengan #include <stdlib.h>
di eclips juga sama hanya saja tidak memakai #include <conio.h> pada eclips.



Program 6.3 untuk borlan


lanjutan
lanjutan
Program 6.3 untuk eclips
lanjutan

lanjutan
Output Program 6.3 untuk eclips
Perbedaan Program 6.3 untuk borlan dan eclips
Jika diBorlan library seperti :
#include <iostream>
#include <list>
#include<malloc>
#include<conio>

ditambah dengan #include <stdlib.h>
di eclips juga sama hanya saja tidak memakai #include <conio.h> pada eclips.