Skip to content

Instantly share code, notes, and snippets.

@faytranevozter
Created January 2, 2018 01:58
Show Gist options
  • Save faytranevozter/3d20dcf972bfff5893224a724b3c5332 to your computer and use it in GitHub Desktop.
Save faytranevozter/3d20dcf972bfff5893224a724b3c5332 to your computer and use it in GitHub Desktop.
import java.util.Scanner;
class simpul {
// bagian deklarasi struktur record ----------------------------------
String nama;
String alamat;
int umur;
char jekel;
String hobi[] = new String[3];
float ipk;
simpul kiri;
simpul kanan;
}
class ExampleHeap {
public static simpul awal;
public static simpul akhir;
public static void inisialisasiSenaraiKosong() {
awal = null;
akhir = null;
}
public static void tambahDepan() {
// ------------bagian entri data dari keyboard--------------
String NAMA;
String ALAMAT;
int UMUR;
char JEKEL;
String HOBI[] = new String[3];
float IPK;
Scanner masukan = new Scanner(System.in);
int bacaTombol=0;
System.out.println("TAMBAH DEPAN : ");
System.out.print("Silakan masukkan nama anda : ");
NAMA = masukan.nextLine();
System.out.print("Silakan masukkan alamat anda : ");
ALAMAT = masukan.nextLine();
System.out.print("Silakan masukkan umur anda : ");
UMUR = masukan.nextInt();
System.out.print("Silakan masukkan Jenis Kelamin anda : ");
try {
bacaTombol = System.in.read();
} catch(java.io.IOException e) {}
JEKEL = (char)bacaTombol;
System.out.println("Silakan masukkan hobi (maks 3) : ");
System.out.print("hobi ke-0 : ");
HOBI[0] = masukan.next();
System.out.print("hobi ke-1 : ");
HOBI[1] = masukan.next();
System.out.print("hobi ke-2 : ");
HOBI[2] = masukan.next();
System.out.print("Silakan masukkan IPK anda : ");
IPK = masukan.nextFloat();
// ------------bagian menciptakan & mengisi simpul baru--------------
simpul baru;
baru = new simpul();
baru.nama = NAMA;
baru.alamat = ALAMAT;
baru.umur = UMUR;
baru.jekel = JEKEL;
baru.hobi[0] = HOBI[0];
baru.hobi[1] = HOBI[1];
baru.hobi[2] = HOBI[2];
baru.ipk = IPK;
// ----------bagian mencangkokkan simpul baru ke dalam simpul lama--------------
if (awal == null){ // jika senarai masih kosong
awal = baru;
akhir = baru;
baru.kiri = null;
baru.kanan = null;
} else { // jika senarai tidak kosong
baru.kanan = awal;
awal.kiri = baru;
awal = baru;
awal.kiri = null;
}
}
public static void tambahBelakang() {
// ------------bagian entri data dari keyboard--------------
String NAMA;
String ALAMAT;
int UMUR;
char JEKEL;
String HOBI[] = new String[3];
float IPK;
Scanner masukan = new Scanner(System.in);
int bacaTombol=0;
System.out.println("TAMBAH BELAKANG : ");
System.out.print("Silakan masukkan nama anda : ");
NAMA = masukan.nextLine();
System.out.print("Silakan masukkan alamat anda : ");
ALAMAT = masukan.nextLine();
System.out.print("Silakan masukkan umur anda : ");
UMUR = masukan.nextInt();
System.out.print("Silakan masukkan Jenis Kelamin anda : ");
try {
bacaTombol = System.in.read();
} catch(java.io.IOException e) {}
JEKEL = (char)bacaTombol;
System.out.println("Silakan masukkan hobi (maks 3) : ");
System.out.print("hobi ke-0 : ");
HOBI[0] = masukan.next();
System.out.print("hobi ke-1 : ");
HOBI[1] = masukan.next();
System.out.print("hobi ke-2 : ");
HOBI[2] = masukan.next();
System.out.print("Silakan masukkan IPK anda : ");
IPK = masukan.nextFloat();
// ------------bagian menciptakan & mengisi simpul baru--------------
simpul baru;
baru = new simpul();
baru.nama = NAMA;
baru.alamat = ALAMAT;
baru.umur = UMUR;
baru.jekel = JEKEL;
baru.hobi[0] = HOBI[0];
baru.hobi[1] = HOBI[1];
baru.hobi[2] = HOBI[2];
baru.ipk = IPK;
// ----------bagian mencangkokkan simpul baru ke dalam simpul lama--------------
if (awal == null) { // jika senarai kosong
awal = baru;
akhir = baru;
baru.kiri = null;
baru.kanan = null;
} else { // jika senarai tidak kosong
baru.kiri = akhir;
akhir.kanan = baru;
akhir = baru;
akhir.kanan = null;
}
}
public static int hitungJumlahSimpul() {
int N = 0;
simpul bantu;
bantu = awal;
while (bantu!=null) {
N++;
bantu = bantu.kanan;
}
return(N);
}
public static void tambahTengah() {
// ------------bagian menentukan lokasi target--------------
Scanner masukan = new Scanner(System.in);
System.out.println("Tentukan Lokasi Penambahan Data");
int LOKASI = masukan.nextInt();
int jumlahSimpulYangAda = hitungJumlahSimpul();
if (LOKASI==1){
System.out.println("Lakukan penambahan di depan");
} else if (LOKASI > jumlahSimpulYangAda){
System.out.println("Lakukan penambahan di belakang");
} else {
// ------------bagian entri data dari keyboard--------------
String NAMA;
String ALAMAT;
int UMUR;
char JEKEL;
String HOBI[] = new String[3];
float IPK;
// Scanner masukan = new Scanner(System.in);
int bacaTombol=0;
System.out.println("TAMBAH TENGAH : ");
System.out.print("Silakan masukkan nama anda : ");
masukan.nextLine(); // clear buffer
NAMA = masukan.nextLine();
System.out.print("Silakan masukkan alamat anda : ");
ALAMAT = masukan.nextLine();
System.out.print("Silakan masukkan umur anda : ");
UMUR = masukan.nextInt();
System.out.print("Silakan masukkan Jenis Kelamin anda : ");
try {
bacaTombol = System.in.read();
} catch(java.io.IOException e) {}
JEKEL = (char)bacaTombol;
System.out.println("Silakan masukkan hobi (maks 3) : ");
System.out.print("hobi ke-0 : ");
HOBI[0] = masukan.next();
System.out.print("hobi ke-1 : ");
HOBI[1] = masukan.next();
System.out.print("hobi ke-2 : ");
HOBI[2] = masukan.next();
System.out.print("Silakan masukkan IPK anda : ");
IPK = masukan.nextFloat();
// ------------bagian menemukan posisi yang dikehendaki--------------
simpul bantu;
bantu = awal;
int i = 1;
while ((i<LOKASI) && (bantu!=akhir)) {
bantu = bantu.kanan;
i++;
}
// ------------bagian menciptakan & mengisi simpul baru--------------
simpul baru = new simpul();
baru.nama = NAMA;
baru.alamat = ALAMAT;
baru.umur = UMUR;
baru.jekel = JEKEL;
baru.hobi[0] = HOBI[0];
baru.hobi[1] = HOBI[1];
baru.hobi[2] = HOBI[2];
baru.ipk = IPK;
// ----------bagian mencangkokkan simpul baru ke dalam linkedlist lama-------
baru.kiri = bantu.kiri;
baru.kiri.kanan = baru;
baru.kanan = bantu;
bantu.kiri = baru;
}
}
public static void hapus() {
if (awal == null) { // jika senarai masih kosong
System.out.println("senarai kosong, menghapus tidak dapat dilakukan");
} else { // jika senarai tidak kosong
Scanner masukan = new Scanner(System.in);
System.out.print("Silakan masukkan nama yang ingin dihapus : ");
String NAMACARI = masukan.nextLine();
if (awal == akhir) { // jika hanya ada sebuah simpul
if (awal.nama.equals(NAMACARI)) {
System.out.println("menghapus "+NAMACARI+" dilakukan..");
inisialisasiSenaraiKosong();
} else {
System.out.println("data " +NAMACARI+" tidak ditemukan");
}
} else if (awal.nama.equals(NAMACARI)) { // jika nama ditemukan di awal
System.out.println("menghapus "+NAMACARI+" dilakukan..");
awal = awal.kanan;
awal.kiri = null;
} else {
simpul bantu;
bantu = awal.kanan;
while (bantu.nama.equals(NAMACARI)==false) {
bantu = bantu.kanan;
if (bantu.kanan == null) break;
}
if ((bantu == akhir) && (akhir.nama.equals(NAMACARI)==false)) {
System.out.println("data " +NAMACARI+" tidak ditemukan");
} else if (akhir.nama.equals(NAMACARI)) { // jika nama ditemukan di akhir
akhir = bantu.kiri;
akhir.kanan = null;
} else {
System.out.println("menghapus "+NAMACARI+" dilakukan..");
bantu.kanan.kiri = bantu.kiri;
bantu.kiri.kanan = bantu.kanan;
}
}
}
}
public static void cetakSenaraiMaju() {
if (awal==null) { // jika senarai masih kosong
System.out.print("....MAAF SENARAI KOSONG....");
} else { // jika senarai tidak kosong
System.out.println("------------------------------------------------------");
System.out.println("NO NAMA ALAMAT UMUR JEKEL IPK ");
System.out.println("------------------------------------------------------");
simpul bantu;
bantu = awal;
while (bantu != null) {
System.out.print (bantu.nama + "\t ");
System.out.print (bantu.alamat + "\t ");
System.out.print (bantu.umur + "\t ");
System.out.print (bantu.jekel + "\t ");
System.out.print (bantu.hobi[0] + "\t ");
System.out.print (bantu.hobi[1] + "\t ");
System.out.print (bantu.hobi[2] + "\t ");
System.out.println(bantu.ipk);
bantu = bantu.kanan;
}
System.out.println("------------------------------------------------------");
}
}
public static void cetakSenaraiMundur() {
if (awal==null){ // jika senarai masih kosong
System.out.print("....MAAF SENARAI KOSONG....");
} else { // jika senarai tidak kosong
System.out.println("------------------------------------------------------");
System.out.println("NO NAMA ALAMAT UMUR JEKEL IPK ");
System.out.println("------------------------------------------------------");
simpul bantu;
bantu = akhir;
while (bantu != null) {
System.out.print (bantu.nama + "\t ");
System.out.print (bantu.alamat + "\t ");
System.out.print (bantu.umur + "\t ");
System.out.print (bantu.jekel + "\t ");
System.out.print (bantu.hobi[0] + "\t ");
System.out.print (bantu.hobi[1] + "\t ");
System.out.print (bantu.hobi[2] + "\t ");
System.out.println(bantu.ipk);
bantu = bantu.kiri;
}
System.out.println("------------------------------------------------------");
}
}
public static void tukarNilai( simpul X, simpul Y) {
simpul sementara = new simpul();
sementara.nama = X.nama;
sementara.alamat = X.alamat;
sementara.umur = X.umur;
sementara.jekel = X.jekel;
sementara.ipk = X.ipk;
X.nama = Y.nama;
X.alamat = Y.alamat;
X.umur = Y.umur;
X.jekel = Y.jekel;
X.ipk = Y.ipk;
Y.nama = sementara.nama;
Y.alamat = sementara.alamat;
Y.umur = sementara.umur;
Y.jekel = sementara.jekel;
Y.ipk = sementara.ipk;
}
//-------------------------------------------------
// bisa untuk single LL dan double LL
//-------------------------------------------------
public static void mengurutkanDataBubble_TeknikTukarNilai() {
int N = hitungJumlahSimpul();
simpul A=null;
simpul B=null;
simpul berhenti = akhir.kanan;
System.out.println ("Banyaknya simpul = " + hitungJumlahSimpul());
for (int i=1; i<= hitungJumlahSimpul()-1; i++) {
A = awal;
B = awal.kanan;
int nomor = 1;
while (B != berhenti) {
if (A.nama.compareTo(B.nama)>0) { //tukarkan elemen dari simpul A dan elemen dari simpul B
tukarNilai(A,B);
}
A = A.kanan;
B = B.kanan;
nomor++;
}
berhenti = A;
}
System.out.println ("====PROSES PENGURUTAN BUBBLE SELESAI=======");
}
public static void mengurutkanDataBubble_TeknikTukarHeap() {
int N = hitungJumlahSimpul();
simpul A=null;
simpul B=null;
simpul bantu=null;
simpul berhenti = akhir.kanan;
int nomor;
System.out.println ("Banyaknya simpul = " + hitungJumlahSimpul());
for (int i=1; i<= hitungJumlahSimpul()-1; i++) {
//for (int i=1; i<= 4; i++)
A = awal;
B = awal.kanan;
nomor = 1;
//proses banding-tukar, khusus simpul pertama dgn sebelahnya
if (A.nama.compareTo(B.nama)> 0) {
A.kanan = B.kanan;
B.kanan = A;
awal = B;
}
//proses banding-tukar, simpul kedua dgn sebelahnya, dst
nomor++;
bantu = awal;
while (bantu.kanan.kanan!=berhenti) {
A = bantu.kanan;
B = bantu.kanan.kanan;
if (A.nama.compareTo(B.nama)>0) { // tukarkan simpul A dan simpul B
A.kanan = B.kanan;
B.kanan = A;
bantu.kanan = B;
if (B==akhir) akhir = A;
}
bantu = bantu.kanan;
nomor++;
}
berhenti = bantu.kanan;;
System.out.println ("");
}
System.out.println ("====PROSES PENGURUTAN BUBBLE SELESAI=======");
}
public static void cariLinear() {
if (awal==null) { // jika senarai masih kosong
System.out.print("....MAAF SENARAI KOSONG....");
} else { // jika senarai tidak kosong
Scanner masukan = new Scanner(System.in);
System.out.print("Silakan masukkan nama yang anda cari : ");
String NAMACARI = masukan.nextLine();
boolean statusKetemu = false;
int i = 0;
int posisiKetemu=-1;
simpul bantu;
bantu = awal;
while (bantu != null) {
if (NAMACARI.equals(bantu.nama)) {
statusKetemu = true;
posisiKetemu = i;
}
bantu = bantu.kanan;
i++;
}
System.out.println ("Status Ketemu = "+statusKetemu +" di posisi ke "+posisiKetemu);
}
}
public static void main(String[] args) {
inisialisasiSenaraiKosong();
tambahDepan();
tambahDepan();
tambahDepan();
tambahBelakang();
tambahBelakang();
cetakSenaraiMaju();
cariLinear();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment