Contoh Program Queue Memakai Linked List dalam Bahasa Java

class simpulq{
    int data;
    simpulq prev, next;
    simpulq(int d){
        data=d;
    }
    int getdata(){ return data; }
}
class linkedlistq{
    simpulq head, tail;
    linkedlistq(){
        head=tail=null;
    }

    void insert(int d){
        simpulq baru = new simpulq(d);
        if (head==null){ head=tail=baru;
        }
        else{
            tail.next = baru;
            baru.prev = tail;
            tail = baru;
        }
    }
    void remove(){
        if (head.next==null){ head=null; tail=null;
        }
        else{
            head=head.next;
            head.prev=null;
        }
    }
    void display(){
        System.out.print("\nIsi Antrian: ");
        for(simpulq t=head; t!=null; t=t.next){
            System.out.print("["+t.getdata()+"]");
        }
    }
}
public class MyQueue {
    public static void main(String j[]){
        linkedlistq queue = new linkedlistq();
        queue.insert(8); queue.display();
        queue.insert(5); queue.display();
        queue.insert(4); queue.display();
        queue.insert(6); queue.display();
        queue.remove(); queue.display();
        queue.remove(); queue.display();
        queue.remove(); queue.display();
        queue.remove(); queue.display();
    }
}

Situs Online Judge Pemrograman

Buat para ksatria programming, baik yang pemula atau yang sudah master, silahkan uji kesaktiannya di situs online judge. Di situs tersebut akan banyak koleksi soal pemrograman yang bisa dipecahkan. Pengguna bisa bersaing dengan pengguna lainnya. Situs online judge menjadi kawah candradimuka yang pas buat teman-teman yang sedang mempersiapkan mengikuti kompetisi/ lomba pemrograman. Berikut ini beberapa alamat situsnya:

1. AIZU Online Judge. Dikembangkan oleh Universitas Aizu Jepang. Di situs ini tercatat sudah memiliki 26 volume paket soal. Setiap volume berisi sekitar 50 soal.

2. Sphere Online Judge. Sampai artikel ini dibuat, ada 14 juta lebih kiriman jawaban dari 300 ribu lebih pengguna. Koleksi problems-nya mencapai 24.000 soal untuk kategori Classical.

3. URI Online Judge. Situs ini dikembangkan oleh Departemen Ilmu Komputer Universitas Rhode Island, Amerika. Koleksinya 700 problems dalam 8 kategori utama.



4. UVA Online Judge. Dibuat oleh Universitas Valladolid (Spanyol), bekerjasama dengan ACM ICPC. Ada 14 paket problems. Satu paket problems berisi sekitar 1.500 soal.

5. JollyBee Online Judge. Dibangun oleh Universitas Binus. Mungkin situs ini satu-satunya yang berbahasa Indonesia. Koleksi soalnya belum begitu banyak. Baru ada sekitar 90 problem.

Contoh Implementasi Relasi OOP Is-A dan Has-A Memakai Bahasa Java

Berikut ini adalah contoh source code sederhana implementasi relasi Is-A dan Has-A dalam sebuah program. Studi kasusnya adalah seorang mahasiswa bisa memiliki banyak koleksi buku. Sedangkan buku sendiri bisa berupa buku teks dan buku ajar. Untuk lebih bagusnya, coding berikut ini bisa dikembangkan dengan menambahkan menu program. Selamat belajar :)

/**
 * Program ini tentang mahasiswa yang memiliki banyak koleksi buku
 * Buku bisa berupa text book, dan buku ajar
 */
class buku{
    String judul;
    String penulis;
}
class textbook extends buku{
    String penerbit;
    textbook(String j, String p, String b){
        judul=j; penulis=p; penerbit=b;
    }
}

class bukuajar extends buku{
    String matakuliah;
    bukuajar(String j, String p, String m){
        judul=j; penulis=p; matakuliah=m;
    }
}
class mhs{
    String nama;
    textbook tb[];
    bukuajar ba[];
    int jtb, jba;
    mhs(String n){
        nama=n;
        tb = new textbook[10]; ba = new bukuajar[5];
    }
    void tambahTB(textbook t){      //obyek text book sbg parameter method
        if (jtb<10){
            tb[jtb]=t;
            jtb++;
            System.out.println("Penambahan text book sukses...");
        }
        else{
            System.out.println("Kapasitas text book penuh...");
        }
    }
    void tambahBA(bukuajar b){      //obyek buku ajar sbg parameter method
        if (jba<10){
            ba[jba]=b;
            jba++;
            System.out.println("Penambahan buku ajar sukses...");
        }
        else{
            System.out.println("Kapasitas buku ajar penuh...");
        }
    }
    void lihatkoleksi(){
        System.out.println("\nKoleksi Buku Teksnya "+nama+" :");
        for(int i=0; i<jtb; i++){
            System.out.println((i+1)+". "+tb[i].judul+" karya "+tb[i].penulis);
        }
        System.out.println("Koleksi Buku Ajarnya "+nama+" :");
        for(int i=0; i<jba; i++){
            System.out.println((i+1)+". "+ba[i].judul+" karya "+ba[i].penulis);
        }
    }
    void hapuskoleksi(){
        //1. input jenis buku
        //2. input judul buku
        //3. cari buku
        //4. konfirmasi penghapusan
        //5. hapus buku
    }
}
public class koleksi {
    public static void main(String h[]){
        //buat obyek mahasiswa
        mhs m = new mhs("Budi");
        //buat obyek buku teks
        textbook tb1 = new textbook("Java Fundamental","M.Carrick", "Sun System");
        textbook tb2 = new textbook("Database for Dummies", "Samarkhand", "Mc Graw Hill");
        //masukkan obyek buku teks ke obyek mahasiswa
        m.tambahTB(tb1);
        m.tambahTB(tb2);
        m.lihatkoleksi();
        //buat obyek buku ajar
        bukuajar ba1 = new bukuajar("Pengantar Teknologi Informasi","Prof. Fauzi", "PTI");
        bukuajar ba2 = new bukuajar("Sistem Informasi Manajemen", "Dr. Asti", "SIM");
        //masukkan obyek buku ajar ke obyek mahasiswa
        m.tambahBA(ba1);
        m.tambahBA(ba2);
        m.lihatkoleksi();
    }
}

Contoh Program Implementasi Stack Menggunakan Linked List dalam Bahasa Java

class item //atau node/simpul
{
public int data; // data item
public item next; // next node link in list
public item prev; // previous node link in list
public item(int id) // constructor
{
data = id; // initialize data
} // set to null)
public void displayLink() // display ourself
{
System.out.print("{" + data + "} ");
}
} // end class Link
class StackLinkList
{
private item top; // ref to first link on list
private item bottom; // ref to last link on list
public StackLinkList() // constructor
{
top = bottom = null; // no items on list yet
}

public boolean isEmpty() // true if list is empty
{
return (top==null);
}
public void push(int id) //node baru selalu di top
{ // make new link
item newitem = new item(id);
if (top == null) // the first node created
{
top = bottom = newitem; // first --> newLink
}
else // the second node and the next node
{
top.next = newitem; //next dr top (awal) diarahkan ke node baru
newitem.prev = top; //prev dr node baru diarahkan ke tail (awal)
top = newitem; //top (baru) diarahkan ke node baru
}
}
public item pop() // delete first item
{ item temp = null;
if (top == null) // stack is empty
System.out.println("Stack is empty");
else if (top == bottom) // stack is only one data
{
temp = top;
top = bottom = null;
}
else // stack has more than one data
{
temp = top; // save reference to link
top = top.prev; // delete it: first-->old next
top.next = null;
}
return temp;
}
public void display()
{
item current = bottom; // start from the first data
while(current != null) // until end of list,
{
current.displayLink(); // print data
current = current.next; // move to next link
}
System.out.println("");
}
} // end class LinkList
class StackLinkListApp
{
public static void main(String[] args)
{
StackLinkList theStack = new StackLinkList(); // make new list
System.out.println("Initializing Stack...");
theStack.push(22); // insert four items
theStack.push(44);
theStack.push(66);
theStack.push(88);
System.out.println("Display Forward :");
theStack.display(); // display list
System.out.println("Delete Stack from Top...");
while( !theStack.isEmpty() ) // until it's empty,
{
item aLink = theStack.pop(); // delete link
System.out.print("Deleted "); // display it
aLink.displayLink();
System.out.println("");
}
theStack.display(); // display list
} // end main()
}

Algoritma Evaluasi Hasil Persamaan Postfix

Berikut ini adalah contoh penggunaan tipe data stack untuk menghitung hasil akhir dari operasi/ formula matematis jenis postfix. Notasi postfix adalah notasi matematis dimana tanda operatornya diletakkan setelah kedua operannya. Sebagai contoh, jika dalam notas infix kita tulis A+B, maka dalam notasi postfix menjadi AB+. Berikut ini adalah algoritmanya:

opndstck = the_empty_stack
/* scan the input string, one by one element, into symb
while ( not_end_of_input_string )
{ symb = next_input_character
   if ( symb_is_an_operand )
         push ( opndstck, symb )
   else /* symb is an operator */

  {     opnd2 = pop ( opndstck )
         opnd1 = pop ( opndstck )
         value = opnd1 (symb) opnd2
         push ( opndstck, value )
   } /* end else */
} /* end while */

return ( pop ( opndstck ) )