Selasa, 02 Maret 2010

Struktur Data Stack dan Queue

Contoh Program:


1. Stack

import java.util.Scanner;

import java.io.*;

class tumpukan{

private int max;

private long[]isi;

private int top;

public tumpukan(int n){

max=n;

isi=new long [max];

top=-1;

}

public boolean isFull(){

return(top==max-1);

}

public boolean isEmpty(){

return(top==-1);

}

public void push(long j){

isi[++top]=j;

}

public long pop(){

return isi[top--];

}

public long peek(){

return isi[top];

}

public void tampil(){

for(int i=top; i>=0; i--){

System.out.print(isi[i]);

System.out.print(" ");

}

System.out.println("");

}

public void clear(){

while(!isEmpty())

pop();

}

}

public class javaStack {

public static void main (String[]args){

tumpukan tumpuk = new tumpukan(10);

int menu;

do{

System.out.println("Pilih Menu");

System.out.println("1. Tambah data stack");

System.out.println("2. Ambil data stack");

System.out.println("3. Lihat data stack");

System.out.println("4. Buat stack baru");

System.out.println("5. Keluar");

System.out.print("Pilihan anda --> ");

Scanner input = new Scanner(System.in);

menu = input.nextInt();

System.out.println("");

switch(menu){

case 1 : {

if(tumpuk.isFull()) System.out.println("Stack sudah penuh!");

else{

System.out.print("Datanya -->");

long data = input.nextLong();

tumpuk.push(data);

}

break;

}

case 2 : {

if(tumpuk.isEmpty()) System.out.println("Stack kosong");

else{

System.out.println("Data " + tumpuk.peek() + " diambil");

tumpuk.pop();

}

break;

}

case 3: {

if(tumpuk.isEmpty()) System.out.println("Stack kosong!");

else {

tumpuk.tampil();

}

break;

}

case 4: tumpuk.clear();

break;

}

}while (menu>0 &&menu<5);

}

}


2. Queue

import java.util.Scanner;

import java.io.*;

class antrian{

private int max;

private long [] isi;

private int ekor;

public antrian(int n){

max=n;

isi = new long[max];

ekor = -1;

}

public boolean isFull(){

return (ekor == max-1);

}

public boolean isEmpty(){

return(ekor==-1);

}

public void enQueue(long j){

ekor++;

isi[ekor]= j;

}

public void deQueue(){

for (int i=0; i

isi[i]= isi[i+1];

ekor--;

}

public long peek(){

return isi[0];

}

public void tampil(){

for (int i=0; i

System.out.print(isi[i]);

System.out.print(" ");

}

System.out.println("");

}

public void clear(){

while(!isEmpty())

deQueue();

}

}

public class javaQueue {

public static void main (String[]args){

antrian antri =new antrian(5);

int menu;

do{

System.out.println("Pilih Menu");

System.out.println("1. Tambah data queue");

System.out.println("2. Ambil data queue");

System.out.println("3. Lihat data queue");

System.out.println("4. Buat queue baru");

System.out.println("5. Keluar");

System.out.println("Pilihan Anda --->: ");

Scanner input = new Scanner (System.in);

menu = input.nextInt();

System.out.println("");

switch(menu){

case 1 : {

if(antri.isFull())System.out.println("Queue sudah penuh");

else {

System.out.print("Datanya--> ");

long data = input.nextLong();

antri.enQueue(data);

}

break;

}

case 2 : {

if (antri.isEmpty()) System.out.println("Queue kosong");

else {

System.out.println("Daata" + antri.peek()+ " diambi");

antri.deQueue();

}

break;

}

case 3 : {

if(antri.isEmpty()) System.out.println( " Queue kosong");

else{

antri.tampil();

}

break;

}

case 4 : antri.clear();

break;

}

} while(menu>0 &&menu<5);

}

}

Perbedaan stack dan Queue

1. Stack

Dalam dunia komputer, penggunaan stack atau tumpukan merupakan salah satu komponen penting untuk menjamin proses penanganan suatu data disamping hal lain seperti Queue (antrian).

Elemen-elemen yang berada dalam stack memiliki prinsip dasar dalam pengoperasiannya yaitu prinsip LIFO (Last In First Out) atau yang masuk paling belakang akan memiliki prioritas untuk keluar paling depan. Terdapat empat operasi pada stack, yakni CREATE (stack), ISEMPTY(stack), PUSH(elemen, stack), dan POP (stack).

Suatu stack dapat digambarkan sebagai suatu array (larik) berdimensi satu yang elemen-elemennya berkisar antara 1 sampai n elemen. Dengan demikian jika suatu stack didefinisikan dengan n elemen maka dapat dikatakan jumlah maksimum dari stack atau NOEL(S) nya adalah n, sehingga penambahan elemen stack yang ke n+1 tidak diperkenankan atau stack tersebut dalam kondisi overflow. Hal tersebut juga berlaku untuk stack dengan nilai minimum yaitu NOEL(S) dari stack dalam kondisi 0, jika dilakukan operasi pengambilan elemen atas stack tersebut akan mengakibatkan stack tersebut dalam kondisi underflow. Dua kondisi tersebut merupakan dasar dalam merancang suatu aplikasi pemrograman komputer.

Suatu stack pada dasarnya merupakan array yang memuat 2 informasi penting yaitu NOEL yang berfungsi untuk mengetahui jumlah tumpukan dan TOP yang berfungsi untuk menentukan posisi puncak dari suatu stack. Stack juga memiliki 2 kondisi yang dapat menyebabkan error yaitu kondisi underflow jika stack tersebut dalam keadaan kosong dilakukan operasi ambil data (pop) dan kondisi overflow jika stack dalam keadaan penuh dilakukan operasi penambahan data. Kedua posisi ini dapat menyebabkan stack dalam keadaan tidak valid sehingga penggunaan error trapping untuk menampung kondisi tidak valid perlu diperhatikan.

2. Queue

Struktur data antrean atau queue adalah suatu bentuk khusus dari linear list, dengan operasi penyisipan (insertion) hanya diperbolehkan pada salah satu sisi, yang disebut sisi belakang (REAR), dan operasi penghapusan (deletion) hanya diperbolehkan pada sisi lainnya, yang disebut sisi depan (FRONT), dari list. Ada 4 operasi dasar yang dapat dilakukan pada struktur data antrean, yakni :

1. CREATE(antrean)

2. ISEMPTY(antrean)

3. INSERT(elemen,antrean)

4. REMOVE(antrean)

Antrean dapat disajikan di dalam komputer dalam berbagai cara. Biasanya dengan menggunakan one-way-list (linear linked list) ataupun menggunakan array. Kalau tidak disebutkan lain, maka antrean kita sajikan dalam array QUEUE, dengan dilengkapi dua variabel penunjuk. FRONT, berisi lokasi dari elemen DEPAN antrean dan REAR, berisi lokasi dari elemen BELAKANG antrean. Nilai FRONT = NULL menunjukkan bahwa antrean adalah hampa.

Antrean dikatakan beroperasi dalam cara FIRST-IN-FIRST-OUT (FIFO). Disebut demikian karena elemen yang pertama masuk merupakan elemen yang pertama ke luar.

Kesimpulan

Pada stack menggunakan prinsip LIFO (Last In First Out) yang masuk paling belakang akan memiliki prioritas untuk keluar paling depan

Sedangkan antrean atau queue beroperasi dalam cara FIRST-IN-FIRST-OUT (FIFO) elemen yang pertama masuk merupakan elemen yang pertama ke luar.

EveryWhere

Turn it inside out so I can see
The part of you that's drifting over me
And when I wake you're, you're never there
But when I sleep you're, you're everywhere
You're everywhere

Just tell me how I got this far
Just tell me why you're here and who you are
'Cause every time I look
You're never there
And every time I sleep
You're always there

'Cause you're everywhere to me
And when I close my eyes it's you I see
You're everything I know
That makes me believe
I'm not alone
I'm not alone

I recognize the way you make me feel
It's hard to think that
You might not be real
I sense it now, the water's getting deep
I try to wash the pain away from me
Away from me

'Cause you're everywhere to me
And when I close my eyes it's you I see
You're everything I know
That makes me believe
I'm not alone
I'm not alone

I am not alone
Whoa, oh, oooh, oh

And when I touch your hand
It's then I understand
The beauty that's within
It's now that we begin
You always light my way
I hope there never comes a day
No matter where I go
I always feel you so

'Cause you're everywhere to me
And when I close my eyes it's you I see
You're everything I know
That makes me believe
I'm not alone
'Cause you're everywhere to me
And when I catch my breath
It's you I breathe
You're everything I know
That makes me believe
I'm not alone

You're in everyone I see
So tell me
Do you see me?

Senin, 18 Mei 2009

My FeeL TO Day

Hae...


aku pengen ngasih saran mungkin juga sekalian curhat, coz ni ru aja terjadi dan aku ga mau terjadi banyak korban dalam masalah ini, hahahaa tsunami kale banyak korban...
langsung aja ni, kita sekarang dah ga asing ama yang namanya chatting, yap chat merupakan bagian dari hidup, bagi mereka yang benar benar membutuhkan tentunya, mungkin juga termasuk aku,hehehehhe... ga jarang kita udah ngrasa nyaman ama seseorang yang ada dalam chat tersebut, tapi kita harus hati-hati dalam chatt karena ga semua yang diceritakan itu benar adanya, kadang kita dapat menyimpulkan dari hasil ngobrol kita dengan orang lain bahwa orang itu baik, jahad, mesum, atau mungkin sadis tapi terlebih dari itu, mereka ada di dunia maya apapun bisa terjadi.

ada kalanya kita akan percaya pada orang lain dan merasa nyaman dengan orang tersebut, ini wajar karena kita dapat berdiskusi dengan baik, nyambung, dan fun. ga semua orang dalam chatt itu jahad tapi banyak juga yang baik, tergantung kita untuk memilih teman ngobrol kita. saat kita telah percaya, merasa nyaman dan mengganggap orang lain sebagai teman baik kita, pastinya kita akan berfikir untuk bertemu secara langsung orang tersebut, yang diharapkan dapat berteman dalam dunia real, tidak hanya dalam maya. tapi terkadang saat kita bertemu teman chatt akan ada kepuasan ataupun kekecewaan, yah itu jawaban yang akan kita temukan apabila kita bertemu dengan teman maya, kalo memang teman chat kita merasa puas saat bertemu, maka pertemanan pun akan berlanjut, namun bila merasa kecewa, ga dipungkiri persahabatan yang telah terjalin akan terputus begitu saja, dan kadang akan menimbulkan sakit hati pada salah satu pihak yang merasa terkhianati, jadi aku mau memberi sedikit saran kalo kita mau bertemu dengan temen chatt yang telah kita percaya,agar tidak kecewa nantinya:

1. Pastikan orang yang akan kita temui orang yang baik,tidak pamrih, tulus, jujur,,.... yapz tapi itu yang biasa kita rasakan saat chatt namun jika saat bertemu kita merasa dia tidak seperti yang kita harapkan itu adalah sebuah resiko.

2. jangan terlalu berharap pada pertemuan pertama tapi mulai berharaplah pada pertemuan kedua ketiga dan seterusnya, karena saat kita bertemu pertama kali kita harus melewati sesi seleksi dimata orang itu apakah mereka merasa puas atau kecewa bertemu kita? apabila jawabannya adalah puas maka sikapnya dalam berchatt ria tidak akan berubah dan akan bertambah hangat, dia mungkin saja dia akan mengajak kita untuk bertemu lagi. dan bila jawaban tersebut adalah kecewa saat bertemu, maka dia akan berubah dalam chattnya, biasanya menjadi lebih cuex,dan tidak mau tau, kadang malah dia tidak akan memberi kabar lagi sejak pertemuan itu, sehingga jangan harapkan untuk bisa bertemu lagi,dan bisa saja pertemuan pertama dengan orang itu menjadi pertemuan yang terakhir, kadang ini akan meninggalkan luka bagi yang ditinggalkan, mati kali ditinggalkan,hehehhee..

3. saat berchatt kita tanyakan apa tujuannya bertemu, dan memastikan agar tidak berubah jika saat bertemu tidak seperti yang diharapkan. kadang ini berhasil untuk mempertahankan persahabatan dalam chatt tapi kembali masalahnya pada individunya.

4. jangan pernah untuk menyombongkan diri, mengatakan kita kaya, tampan atau cantik, ataupun berusaha menarik perhatian orang itu agar mau menerima kita tapi jadilah be your self... jika mereka merasa kecewa dengan pertemuan kita harus tegar, walaupun kadang membuat sakit hati namun kita harus mengambil hikmahnya karena orang tersebut tidak tulus untuk berteman dengan kita. ingat hilang satu tumbuh seribu.

5. bertemulah di tempat yang ramai, untuk menghindari hal hal yang tidak diinginkan. bukannya kita su udzon tapi lebih baik untuk mencegah.

6. jangan buat keputusan saat bertemu apakah orang itu tulus atau ngga, tapi lihatlah setelah kita bertemu orang tersebut, apakah dia tetap tulus berteman atau tidak. mungkin saja saat bertemu kita merasa nyaman, merasa dia baik, dia perhatian, dia membuatku tertawa tapi kita tidak tau kan apa yang ada dihati orang lain.
Mungkin itu dulu aja ya, tips nya lain kali kalo aku terinspirasi kembali aku akan menambahkan, atau mungkin teman- teman ada yang mau menambahkan?? Akan dengan senang hati menerimanya...

Tulisan ini terispirasi pada masalah pribadiku yang tidak jauh dari ini 0405 hari yang menyenangkan sekaligus menyakitkan, thx 4 everything, thx atas jawaban kekecewaanmu, yang tak kan pernah terucapkan.....

Makasih ya.. udah mau mampir di blog sederhanaku ini ;)

Rabu, 11 Maret 2009

Foto foto bersama teman temanku



perkenalkan ini aku lisna....


aku pengen pamer sedikit ni.... poto poto saat bersama teman teman ku...

tapi walau cuma sedikit cukup buuat ak merasa berarti, hehehhhee...