Pas UAS Struktur Data kemarin dapet tugas bikin aplikasi menggunakan struktur data Depth First Search..(untuk lebih jelasnya tentang apa itu DFS, lihat disini: http://ifrozi.wordpress.com/2008/01/08/depth-first-search/ )kemudian saya dan rekan saya memutuskan untuk membuat aplikasi tentang pencarian kota karena kami pikir itu yang paling dekat dan bersangkutan langsung dengan materi.
deadline pengumpulan + presentasi tugasnya kurang dari seminggu (parah lah, lebih pendek seminggu daripada tugas UTS). Pontang-panting, grusa-grusu , dan rada ngawur ngerjainnya. Akhirnya pada hari Hnya inilah yang kami kumpulkan dan presentasikan:
source code untuk kelas DFS:
package dfc;
import javax.swing.*;
import java.util.*;
import java.io.*;
/**
*
* @author Nursih
*/
class TSP {
String from;
String to;
int distance;
boolean skip;
TSP(String f, String t, int d) {
from = f;
to = t;
distance = d;
skip = false;
}
}
public class Depth {
final int MAX = 100;
TSP jalur[] = new TSP[MAX];
int noJalur = 0;
Stack btStack = new Stack();
public class deklarasi{
}
public static void main(String args[]) {
String to, from;
Depth dn = new Depth();
System.out.println("silahkan pilih kota tujuan anda :");
System.out.println(" ");
System.out.println("Bogor ke Bandung ");
System.out.println("bandung ke cianjur");
System.out.println("bandung ke jakarta");
System.out.println("jakarta ke bogor");
System.out.println("jogja ke bandung");
System.out.println("jogja ke jakarta" );
System.out.println("cianjur ke jakarta");
System.out.println("jogja ke semarang");
System.out.println("bandung ke semarang");
System.out.println("jakarta ke semarang");
System.out.println("surabaya ke jakarta");
System.out.println("bandung ke surabaya");
System.out.println(" ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
dn.setup();
try {
System.out.print("Kota Awal: ");
from = br.readLine();
System.out.print("Kota Tujuan: ");
to = br.readLine();
dn.isflight(from, to);
if (dn.btStack.size() != 0)
dn.route(to);
} catch (IOException exc) {
System.out.println("Error on input.");
}
}
void setup() {
addJalur("bogor", "bandung", 25);
addJalur("bandung", "cianjur", 50);
addJalur("bandung", "jakarta", 125);
addJalur("jakarta", "bogor", 150);
addJalur("jogja", "bandung", 200);
addJalur("jogja", "jakarta", 250);
addJalur("cianjur", "jakarta", 300);
addJalur("jogja", "semarang", 250);
addJalur("bandung", "semarang", 250);
addJalur("jakarta", "semarang", 500);
addJalur("surabaya", "jakarta", 1000);
addJalur("bandung", "surabaya", 900);
}
void addJalur(String from, String to, int dist) {
if (noJalur < MAX) {
jalur[noJalur] = new TSP(from, to, dist);
noJalur++;
} else
System.out.println("TSP database penuh.\n");}
void route(String to) {
Stack rev = new Stack();
int dist = 0;
TSP t;
int num = btStack.size();
for (int i = 0; i < num; i++)
rev.push(btStack.pop());
for (int i = 0; i < num; i++) {
t = (TSP) rev.pop();
System.out.print(t.from + " ke ");
dist += t.distance; }
System.out.println(to);
System.out.println("Jaraknya adalah " + dist + " kilometer"); }
int match(String from, String to) {
for (int i= noJalur-1;i > -1; i--) {
if (jalur[i].from.equals(from) && jalur[i].to.equals(to)&& !jalur[i].skip)
{
jalur[i].skip = true;
return jalur[i].distance; }
}
return 0; }
TSP find(String from) {
for (int i = 0; i < noJalur; i++) {
if (jalur[i].from.equals(from) && !jalur[i].skip) {
TSP t = new TSP(jalur[i].from, jalur[i].to,
jalur[i].distance);
jalur[i].skip = true;
return t; }
}
return null; }
void isflight(String from, String to) {
int dist;
TSP t;
dist = match(from, to);
if (dist != 0) {
btStack.push(new TSP(from, to, dist));
return; }
t = find(from);
if (t != null) {
btStack.push(new TSP(from, to, t.distance));
isflight(t.to, to);
} else if (btStack.size() > 0) {
t = (TSP) btStack.pop();
isflight(t.from, t.to); }
}
}
kalau di-run jadinya gini:
intinya, aplikasi ini hanya mencari dan memunculkan data yang telah dimasukkan sebelumnya. Sederhana banget. Tak apalah..Alhamdulillah, masih dikasih nilai B sama bapak dosen.
oiya, ni bikinnya pake NetBeans IDE 6.7.1
sebelumnya mau pake yang 6.8 tapi entah mengapa tiba2 aja ngadat..
4 hari yang lalu
0 komentar:
Posting Komentar