LAPORAN PRAKTIKUM
STRUKTUR DATA
MODUL 5
NAMA: TRI WIJAYANTO
NIM: 115410126
JURUSAN: TI/S1
LABORATORIUM TERPADU
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER AKAKOM
YOGYAKARATA
2012
PEMBAHASAN PRAKTIKUM
MODUL 5
Program
import java.util.Scanner;
class
simpul {
protected
String nama;
int
umur;
simpul
kanan;
public void ngisiSimpul(String NAMA, int UMUR) {
nama = NAMA;
umur =
UMUR; }
void
cetakSimpul() {
System.out.print (nama + "-" + umur
+ " ");}}
PEMBAHASAN :
String nama merupakan data
yang dimasukkan bertipe string dan variabel umur
bertipe data integer.
DalamProgram ini simpul yang digunakan merupakan simpul tunggal yaitu simpul
kanan.Simpul kanan merupakan simpul yang memiliki sebuah
penunjuk yaitu kekanan.Perintah protected merupakan
perintah untuk membatasi hak akses, sehingga variabel nama dan umur tidak dapat
diakses oleh kelas yang lain.Perintah ngisiSimpul(String NAMA, int UMUR), berarti bahwa variabel nama diganti
dengan NAMA dan variabel umur diganti
dengan UMUR. Selanjutnya untuk mencetak simpul tersebut menggunakan
void cetak simpul() { System.out.print(data)}.
class senarai { à kelas
kedua dengan nama senarai
protected à perintah
protected bearti bahwa kelas ini tidak dapat di akses oleh kelas lain
simpul awal;
simpul akhir;
public à konstruktor
void
inisialisasiSenaraiKosong() { à void yang berfungsi
memberitahukan bahwa senarai kosong
awal = null;
akhir = null; }
PEMBAHASAN :
Perintah di atas berarti bahwa kelas senarai terdiri dari Simpul Awal dan simpul
akhir dimana simpul awal merupakan null(nol)=simpul kosong dan diakhiri dengan
simpul akhir yang sam dengan null juga(kosong).Dan perintah
protected merupakan perintah untuk membatasi hak akses, sehingga variabel nama
dan umur tidak dapat diakses oleh kelas yang lain.
int hitungJumlahSimpul() {
int N = 0;
simpul bantu;
bantu = awal;
while (bantu !=
null) {
bantu
= bantu.kanan;
N++; }
return
(N); }
PEMBAHASAN :
Perintah di atas
merupakan perdeklarasian untuk menghitung jumlah simpul dengan tipe data
integer yanag dimulai dari 0. Variabel bantu dideklarasikan dengan nama
variabel yaitu awal. N++ berarti simpul tersebut akanbertambah satu.
void tambahDepan(String NAMA, int
UMUR) { // Perintah di samping
berfungsi untuk menambah diawal 'senarai'
System.out.println("tambah depan '" +NAMA+ "'
dilakukan.."); // Perintah untuk mencetak
bahwa penambahan di bagian depan telah berhasil dilakukan
simpul baru = new simpul() ; à Pembuatan
objek baru dengan nama baru
baru.ngisiSimpul(NAMA, UMUR);
if (awal == null) { //
list masih kosong
awal = baru;
akhir
= baru;
baru.kanan
= null; }
else {
baru.kanan
= awal;
awal
= baru; }}
PEMBAHASAN :
Perintah di atas
menyatakan pembuatan objek baru dengan nama simpul. Pada
pendeklarasian tersebut mengandung sebuah perulanagan. Dalam senarai ini juga
didefinisikan bahwa awal adalah kosong (null) dan akhir juga kosong
( null). Untuk menambahkan data baru kedalam program. Simpul baru = new Simpul
merupakan pembuatan objek baru yang menandakan bahwa Simpul baru merupakan new
simpul. if(awal==null)merupakan fungsi perulangan jika awal sama dengan kosong
maka program akan menandai bahwa akhir adalah baru dan data baru mengikat var
disebelah kanannya(baru.kanan = awal;) dan var baru akan mengikat var dikirinya
yang merupakan var kosong.(baru.kiri = null) sehingga awal sama dengan
baru(awal = baru;).
void tambahBelakang(String NAMA, int UMUR) { à Void
disamping digunakan untuk menambah data senarai pada bagian tengah
System.out.println("tambah belakang '" +NAMA+
"'dilakukan.."); à Perintah untuk mencetak
bahwa penambahan di bagian belakang telah berhasil dilakukan
simpul baru = new simpul(); à Pembuatan
objek baru dengan nama baru
baru.ngisiSimpul(NAMA, UMUR);
if (awal ==
null) { à Sintaks disamping berate
bahwa list masih kosong
awal = baru;
akhir
= baru;
baru.kanan
= null; }
else {
akhir.kanan
= baru;
akhir
= baru;
baru.kanan
= null; }}
PEMBAHASAN :if(awal==null)merupakan
fungsi perulangan jika awal sama dengan kosong maka program akan menandai bahwa
akhir adalah baru dan data baru mengikat var disebelah kanannya(baru.kanan =
awal;) dan var baru akan mengikat var dikirinya yang merupakan var
kosong.(baru.kiri = null) sehingga awal sama dengan baru(awal = baru;) Pada
perulanagn tersebut ada perulangan lagi untuk menghitung jumlah simpul yang
menyatakan bahwa jika posisi awal adalah 1 maka penambahan dilakukan di depan,
jika tidak maka penambhan dilakukan di bagian belakang.
void tambahTengah(int POSISI, String NAMA, int UMUR) { à Void
disamping digunakan untuk menambahkan data senarai pada bagian tengah
System.out.println("tambah
tengah '" +NAMA+ "'dilakukan.."); à Perintah untuk mencetak
bahwa penambahan di bagian tengah telah berhasil dilakukan
if (awal ==
null) {
simpul baru = new simpul(); à Pembuatan
objek baru dengan nama baru
baru.ngisiSimpul(NAMA,
UMUR);
awal
= baru;
akhir = baru;
baru.kanan
= null; }
else {
int
jumlahSimpul = hitungJumlahSimpul();
if
(POSISI == 1) //if (awal.nama > NAMA) {
tambahDepan(NAMA,
UMUR); }
else
if (POSISI > jumlahSimpul) //if(NAMA >
akhir.nama) {
tambahBelakang(NAMA,
UMUR); }
else {
PEMBAHASAN : Perintah di atas
merupakan perulangan jika kanan adalah nol maka hitung jumlah simpul jika
posisi awal adalah 1 maka penambahan dilakukan dibagian depan jika tidak maka
penambahan di lakukan di bagian belakang
simpul bantu = new simpul(); à Pembuatan
objek baru dengan nama bantu
bantu = awal; à Pendeklarasian
objek bantu dengan variabel awal
int N = 1;
while
((N < POSISI-1) && bantu != akhir) //while (bantu.kanan.nama <
NAMA) {
bantu
= bantu.kanan;
N++; }
simpul
baru = new simpul(); à Pembuatan
objek baru dengan nama baru
baru.ngisiSimpul(NAMA,
UMUR);
baru.kanan
= bantu.kanan;
bantu.kanan
= baru; }}}
void cetakSenarai() { à Void
disamping digunakan untuk menvetak senarai
System.out.println("CETAK: "); à Sistem
akan mencetak komentar dalam tanda petik dua tersebeut yaItu CETAK
if
(awal == null) {
System.out.print(".... SENARAI KOSONG...."); } à Sistem
akan mencetak komentar dalam tanda petik dua tersebeut yaitu SENARAI KOSONG ,
sehingga user akan mengetahui bahwa senarai tersebut kosong
else {
simpul bantu =
new simpul(); à Pembuatan
objek baru dengan nama bantu
bantu = awal;
while (bantu !=
null) {
bantu.cetakSimpul();
bantu
= bantu.kanan; }}
PEMBAHASAN :Program tersebut
digunakan untuk menghapus data diakhir senarai.Disini dijelaskan
bahwa Simpul bantu merupakan variabel awal(Simpul bantu = awal;). Dalam program
ini digunakan pengulangan while. Variabel bantu mengikat variabel dikanan yang
sama dengan variabel akhir, fungsi cut digunakan supaya perulangan tidak
melakukan backtracking setelah ditemukan variabel diakhir.( while(bantu.kanan
!=akhir)). Variabel bantu adalah variabel yang hanya mengikat data dikanan(bantu=bantu.kanan;).
Simpul yang dihapus merupakan berada diakhir simpul(simpul hapus= akhir;),
sehingga variabel akhir adalah vaiabelr bantu(akhir=bantu;), Dan variabel akhir
mengikat variabel disebelah kanan yang merupakan kosong(tidak ada data lagi)
maka program akan melakukan penghapusan.
System.out.println(""); } à perintah
yang berfungsi untuk member jarak spasi pada output
void
tambahhapus(String NAMA) { à Void
disamping digunakan untuk menghapus data dari senarai
if (awal == null) {
System.out.println("Senarai kosong, menghapus tidak dapat
dilakukan"); } à Sistem
akan mencetak komentar dalam tanda petik dua tersebeut yaitu meberitahukan
kepada user bahwa senarai kosong dan penghapusan data tidak dapat dilakukan. else {
System.out.println("menghapus '" + NAMA + "'
dilakukan.."); à Perintah untuk mencetak
bahwa penghapusan telah berhasil dilakukan
if
(awal.nama.equals(NAMA)) {
awal
= awal.kanan; }
else {
simpul
bantu;
bantu
= awal;
while
(bantu.kanan.nama.equals(NAMA)==false) //while(bantu.kanan.nama != NAMA) {
bantu
= bantu.kanan;
if
(bantu.kanan == null) break; }
if
((bantu == akhir) && (NAMA.equals(akhir.nama)==false)) {
System.out.println("data
'" + NAMA + "' yang anda maksud tidak ada dalam list"); } à Sistem
akan mencetak pemberitahuan bahwa data yang telah dimasukkan tidak ada dalam
daftar
else {
System.out.println("Menghapus
"+NAMA+" dilakukan..."); à Perintah untuk mencetak
bahwa penghapusan telah berhasil dilakukan
bantu.kanan
= bantu.kanan.kanan; } } } }}
//----------------------bagian program utama-------------------------------------------------//
class senaraitunggal { // Perintah di
samping merupakan kelas utama dari program yang telah dibuat diatas
yaitu dengan nama senaraitunggal.
public static void main(String[] args) { // Program utama
senarai
mahasiswa = new senarai(); à Pembuatan objek baru
dengan nama mahasiswa
mahasiswa.inisialisasiSenaraiKosong(); à Menyatakan bahwa senarai
kosong
mahasiswa.tambahBelakang("Dedi",
15);
mahasiswa.tambahBelakang("Cecep",
12); // Penambahan di bagian
belakang
mahasiswa.tambahBelakang("Budi",
25); mahasiswa.tambahBelakang("Abud",
32);
mahasiswa.cetakSenarai();}} à Perintah
untuk mencetak senarai
HASIL
Praktikum
2
menambahkan perintah di bagian belakang
mahasiswa.tambahBelakang("EKO", 25);
mahasiswa.tambahBelakang("DEDI",
25);
mahasiswa.tambahBelakang("FERI",
25);
mahasiswa.tambahBelakang("GUNAWAN", 32);
mahasiswa.tambahBelakang("HASAN", 19);
mahasiswa.cetakSenarai();
PEMBAHASAN : Sintaks di atas
dimasukkan pada sistem yang bertujuan untuk menambah kan data ke bagian
belakang sistem, penambahan tersebut dilakaukan sebanyak 5 orang yang berbeda
dengan umur yang berbeda pula. Sehingga hasil output dapat terlihat dioutput di
bawah ini yang menyatakan bahwa penamabahan tersebut berhasil dilakukan maka
komposisi dari senarai pun juga terpengaruh oleh penamabahan tersebut .
OUTPUT
Praktikum
3
menambahkan perintah di bagian tengah
mahasiswa.tambahTengah(4,
"ZAENAL", 25);
mahasiswa.cetakSenarai();
PEMBAHASAN :
Perintah
di atas berfungsi untuk menambahkan data pada bagian tengah senarai, pada
awalnya perintah tersebut tidak bias dijalankan karena pada pendeklaraian void
di bagian tengah ada variabel yang tidak sesuai dengan intruksi yaitu baru.kiri = bantu;
bantu.kanan = baru;
output
Praktikum
4
menghapus data
mahasiswa.hapus("DEDI");
mahasiswa.hapus("PARMIN");
mahasiswa.cetakSenarai();
PEMBAHASAN :Sintaks di atas
dimasukkan pada program yang berfungsi untuk menambahkan data orang yang
bernama DEDi dan PARMIN , namun PARMIN hal tersebut tidak dapat dilakukan oleh
sistem karena data dari Parmin tidak berhasil ditemukan oleh sistem.
output
TUGAS
Modifikasi program dengan menambahkan jenis kelamin dan
jabatan :
import java.util.Scanner;
class simpul{
protected
String
nama;
int
umur;
char
jkel;
String
jbtn;
simpul
kanan;
public
void
ngisiSimpul(String NAMA, int UMUR, char JK, String JABATAN) {
nama = NAMA;
umur = UMUR;
jkel= JK;
jbtn= JABATAN;}
void cetakSimpul() {
System.out.print
(nama + "-" + umur + "-" +jkel+" "+jbtn+"
");}}
class senarai{
protected
simpul
awal;
simpul
akhir;
public
void
inisialisasiSenaraiKosong(){
awal = null;
akhir = null;}
int
hitungJumlahSimpul(){
int N = 0;
simpul bantu;
bantu = awal;
while (bantu != null)
{
bantu = bantu.kanan;
N++;
}
return (N);
}
void
tambahDepan(String NAMA, int UMUR, char JK, String JABATAN)
{
System.out.println("tambah depan '" +NAMA+
"' dilakukan..");
simpul baru = new simpul();
baru.ngisiSimpul(NAMA,
UMUR, JK, JABATAN);
if (awal == null) // list masih kosong
{
awal = baru;
akhir = baru;
baru.kanan =
null; }
else {
baru.kanan = awal;
awal = baru;
} }
void
tambahBelakang(String NAMA, int UMUR, char JK, String
JABATAN) {
System.out.println("tambah belakang '" +NAMA+
"'dilakukan..");
simpul baru = new simpul();
baru.ngisiSimpul(NAMA, UMUR, JK, JABATAN);
if (awal == null)
{
awal = baru;
akhir = baru;
baru.kanan = null;
}
else
{
akhir.kanan = baru;
akhir = baru;
baru.kanan = null;
}}
void
tambahTengah(int POSISI, String NAMA, int UMUR, char JK, String JABATAN){
System.out.println("tambah tengah '" +NAMA+
"'dilakukan..");
if (awal == null) {
simpul baru = new simpul();
baru.ngisiSimpul(NAMA, UMUR,JK , JABATAN);
awal = baru;
akhir = baru;
baru.kanan = null; }
els {
int jumlahSimpul = hitungJumlahSimpul();
if (POSISI == 1) //if (awal.nama >
NAMA) {
tambahDepan(NAMA, UMUR, JK,
JABATAN) }
else if (POSISI > jumlahSimpul) //if(NAMA
> akhir.nama) {
tambahBelakang(NAMA, UMUR, JK,
JABATAN); }
else{
simpul bantu = new simpul();
bantu = awal;
int N = 1;
while ((N < POSISI-1) && bantu !=
akhir) //while (bantu.kanan.nama < NAMA){
bantu = bantu.kanan;
N++;}
simpul baru = new simpul();
baru.ngisiSimpul(NAMA, UMUR,JK, JABATAN);
baru.kanan = bantu.kanan;
bantu.kanan = baru;
}}}
void cetakSenarai() {
System.out.println("CETAK:
");
if
(awal == null){
System.out.print(".... SENARAI
KOSONG....");}
else{
simpul bantu = new simpul();
bantu = awal;
while (bantu != null){
bantu.cetakSimpul();
bantu = bantu.kanan;}}
System.out.println("");
}
void tambahHapus(String NAMA){
if
(awal == null){
System.out.println("Senarai kosong,
menghapus tidak dapat dilakukan");}
else{
System.out.println("menghapus '" + NAMA +
"' dilakukan..");
if (awal.nama.equals(NAMA)){
awal = awal.kanan;}
else {
simpul bantu;
bantu = awal;
while (bantu.kanan.nama.equals(NAMA)==false)
//while(bantu.kanan.nama != NAMA{
bantu = bantu.kanan;
if (bantu.kanan == null) break;}
if ((bantu == akhir) &&
(NAMA.equals(akhir.nama)==false)) {
System.out.println("data '" + NAMA
+ "' yang anda maksud tidak ada dalam list");}
else{
System.out.println("Menghapus
"+NAMA+" dilakukan...");
bantu.kanan = bantu.kanan.kanan;} }}}}
//----------------------bagian program
utama-------------------------------------------------
class tugassenaraitunggal{
public
static void main(String[] args) {
senarai mahasiswa = new senarai();
mahasiswa.inisialisasiSenaraiKosong();
mahasiswa.tambahDepan("Dedi",15,'L',
"OB");
mahasiswa.tambahDepan("Cecep",12, 'L',
"OWNER");
mahasiswa.tambahDepan("Ani",11,'P',
"DIREKTUR");
mahasiswa.tambahDepan("Abud",10,'L',
"KEUANGAN");
mahasiswa.cetakSenarai();
mahasiswa.tambahBelakang("Eko",25,'L',
"SEKERTARIS");
mahasiswa.tambahBelakang("Feri",25,'L',
"KARYAWAN");
mahasiswa.tambahBelakang("Gunawan",32,'L',
"SECURITY");
mahasiswa.tambahBelakang("Hasan",19,'L', "KARYAWAN");
mahasiswa.cetakSenarai();
mahasiswa.tambahTengah(4,"Zaenal",25,'L',
"MANEGER");
mahasiswa.cetakSenarai();
mahasiswa.tambahHapus ("Dedi");
mahasiswa.cetakSenarai(); }}
Hasil

LISTING TERLAMPIR
0 komentar:
Posting Komentar