PROGRAM PALINDROME DENGAN STACK

 

PROGRAM PALINDROME DENGAN MENGGUNAKAN STACK


NAMA : ELI NURHAYATI

NPM : 20082010115 


SOAL

Buatlah program menggunakan stack untuk mengecek apakah sebuah input kata (String) termasuk palindrom ataukah bukan. Palindrom adalah kata yang jika dibaca dari depan maupun dari belakang menghasilkan ucapan yang sama.

Contoh:

Input: KATAK. Output: Palindrom

Input: TOMAT. Output: Bukan Palindrom

 

Tips:

Input String dibaca per karakter untuk di-push ke stack sampai selesai semuanya (gunakan loop). Kemudian di-pop satu per satu sampai habis (empty) untuk dibandingkan dengan karakter penyusun kata yang dimasukkan (mulai dari depan). Jika ada karakter yang tidak sama, maka variabel palindrom diberi nilai False.

 

CLASS – CLASS

Class cElemen

package palindrom;

 

public class cElemen {

    String name;

    char huruf;

    //Pointer

    cElemen next;

   

    //Constructor

    cElemen(String nm){

        name=nm;

        System.out.println(">> Item "+nm+" created... <<\n");

    }

    cElemen(char h){

        huruf=h;

    }

   

    //Method Getter

    public String getName(){

        return name;

    }

    public char getHuruf(){

        return huruf;

    }

}

 

 

Class cStack

package palindrom;

 

public class cStack {

    cElemen head, tail;

    String kata;

    int jumlah;

   

    //Constructor

    cStack(){

        head=tail=null;

        jumlah=0;

        System.out.println(">> Object Stack Created... <<");

    }

   

    //Method Operasi PUSH

    public void push(cElemen neww){

        if(head==null){

            //Stack masih kosong

            head=tail=neww;

        }else{

            //Stack sudah terisi

            neww.next=head;

            head=neww;

        }

        System.out.println(" PUSH Success... ");

    }

   

    //Method Operasi POP

    public cElemen pop(){

        cElemen a=head;

        if(head==null){

            //Stack kosong

            System.out.println(">> Oops...Stack Is Empty <<");

            return null;

        }else if(head.next==null){

            //Isi stack sisa 1

            head=tail=null;

            System.out.println(" POP Success... ");

            return a;

        }else{

            //Isi stack >1

            head=head.next;

            a.next=null;

            System.out.println(" POP Success... ");

            return a;

        }

        

    }

   

    //Method Operasi Cek Palindrome

    public void cekPalindrome(cElemen b){

        boolean sama = false;

        kata = b.getName();

        int kl = kata.length();

       

        for(int i=0; i<kl; i++){

            cElemen aa = new cElemen(kata.charAt(i));

            push(aa);

        }

        for(int i=0; i<kl; i++){

            if(pop().getHuruf()==kata.charAt(i)){

                System.out.println("Kedua Huruf Sama ");

                sama=true;

            }else{

                System.out.println("Oops... Kedua Huruf Tidak Sama");

                sama=false;

                break;

            }

        }

        if(sama==true){

            System.out.println("\n>> "+kata+" TERMASUK POLINDROM <<");

        }else{

            System.out.println("\n>> "+kata+" TIDAK TERMASUK PALINDROM <<");

        }

    }

   

}

 

 

Class apkStackPalindrome

package palindrom;

import java.util.Scanner;

public class apkPalindrome {

    public static void main(String[] args) {

       Scanner s = new Scanner(System.in);

       cStack stc = new cStack();

       String word = null;

       int pilih=0;

       do{

           System.out.println("\n================");

           System.out.println("   MENU STACK   ");

           System.out.println("================");

           System.out.println("1. Input Kata\n2. Cek Palindrom\n3. Exit");

           System.out.print("Input Pilihan Anda : ");

           pilih = s.nextInt();

           switch(pilih){

               case 1 :

                   System.out.print("Input Kata : ");

                   word = s.next();

                   break;

                  

               case 2 :

                   cElemen cek = new cElemen(word);

                   stc.cekPalindrome(cek);

                   break;

                  

               case 3:

                   System.out.println(" >>> THANK YOU <<<");

           }

       }while(pilih!=3);

       

    }

   

}

 

 

 

SCREENSHOT RUNNING PROGRAM

 






 

*Klik gambar untuk gambar yang lebih jelas

**Saran dan kritik anda sangat berguna untuk blog ini kedepannya

***Terima Kasiih 😊😊😊

Komentar

Postingan populer dari blog ini

PROGRAM ANTRIAN TIKET PESAWAT

LINKED LIST (TAMBAH DAN HAPUS DARI BELAKANG)