Tidak dapat menerapkan tumpukan melalui kode ini...

GunakanStack.java

     class UseStack{
            public static void main(String[] args) {
                Scanner obj = new Scanner(System.in);
                System.out.println("Enter the size of Stack....");
                int n = obj.nextInt();
                Push push = new Push(n);
                Pop pop = new Pop(n);
                while(true){
                    System.out.println("1: Push");
                    System.out.println("2: pop");
                    System.out.println("3: Show");
                    int choice = obj.nextInt();;
                    switch(choice){
                        case 1:
                        push.push();
                        break;
                        case 2:
                        pop.pop();
                        break;
                        case 3:
                        push.show();    
                        break;
                        default:
                        System.out.println("Invalid Option");
                        break;
                    }
                }
            }
        }

Stack.java

class Stack {
    public int arr[];
    public  int top;
    public  int capacity;

    Stack(int size){
        this.arr = new int[size];
        this.capacity = size;
        this.top = -1;
    }
}

Push.java

class Push extends Stack {
    Push(int size) {
        super(size);
    }

    private static Scanner obj;
    public void push(){
        obj = new Scanner(System.in);
        System.out.println("Enter Value to push...");
        int value = obj.nextInt();
        System.out.println("Value : "+value);
        if(top==capacity-1){
            System.out.println("StackOverflow");
            return;
        }
        else{
            top++;
            System.out.println("Top : "+top);
            arr[top]=value;
            System.out.println("Pushed... "+arr[top]);
        }
    }

    public void show(){
        if(top==-1){
            System.out.println("StackUnderFlow");
            return;
        }
        else{
            System.out.println("Stack Elements : ");
            for(int i=top;i>=0;i--){
                System.out.println(arr[i]+" ");
            }
        }       
    }
}

Pop.java

public class Pop extends Stack {

    Pop(int size) {
        super(size);
    }
    
    public void pop(){
        if(top==-1){
            System.out.println("StackUnderflow-pop");
            return;
        }
        else{
            System.out.println("Top : "+top);
            System.out.println("Poped.. "+arr[top]);
            top--;
        }
    }
    
}

Masalah

Dalam implementasi ini pop() tidak berfungsi .....

Saya pikir untuk kelas Pop ini perlu memperluas kelas Stack dan Push karena ini tidak mungkin di Java, Jika saya salah, adakah yang bisa membantu saya dengan cara menyelesaikannya ...

-2
Itazakh Stern 4 Juli 2020, 14:52

1 menjawab

Jawaban Terbaik

pop() tidak berfungsi karena Anda menggunakan objek yang berbeda untuk push dan pop.

Anda tidak perlu mendefinisikan kelas lain untuk Push dan pop, itu adalah operasi menambahkan fungsi-fungsi itu di dalam kelas Stack.

class Stack {
   ... // members and constructor
   public void push(){..}
   public void pop(){..}
   public void show(){..}
}

Dan buat objek kelas Stack dan gunakan untuk push, pop, dan show

Stack s = new Stack(n);
while(true){
    ... 
    switch(choice){
        case 1:
        s.push();
        break;
        case 2:
        s.pop();
        break;
        case 3:
        s.show();    
        break;
        default:
        System.out.println("Invalid Option");
        break;
    }
}
1
Eklavya 4 Juli 2020, 12:09