Koncepcja stosu wykorzystująca elementy listy - sprawdzenie poprawności kodu

0

Witam. Treść zadania brzmi następująco "Zrealizuj koncepcję stosu wykorzystując w tym celu elementy listy.". Długo się zastanawiałem o co w tym chodzi, ale stwierdziłem, że mam zrobić listę i narzucić na nią "restrykcje" stosu. Wydaje mi się, że zrobiłem to poprawnie, ale często dostaję informację zwrotną, że mam złe nawyki i fakt że działa nie jest wystarczający, stąd ten temat.

Czy powinienem dodać gdzieś Exception? Z tego co przeanalizowałem ten kod to chyba nie, ponieważ nie jest to np. tablica więc wszystko powinno działać.

Klasa MyList - "lista stos"

package list;

public class MyList {

    private ListElement topElement;

    public void push(String element){

        ListElement newElement = new ListElement(element);
        newElement.setNext(topElement); // equals to newElement.next = topElement;
        topElement = newElement;

    }

    public ListElement pop(){

        ListElement poppedElement = topElement;

        if(!isEmpty())          
            topElement = topElement.getNext();
        else
            System.out.println("Empty List");

        return poppedElement;
    }

    public ListElement peek(){
        return topElement;
    }

    public boolean isEmpty(){
        return topElement==null;
    }   
}

Klasa ListElement - klasa opisująca element listy

package list;

public class ListElement {

    private String element;
    private ListElement next;

    public ListElement(String element){
        this.element = element;
    }
    public void setNext(ListElement newNext){
        next = newNext;
    }
    public ListElement getNext(){
        return next;
    }
        public String toString(){
        return element;
    }

}

Pytanie nr 2 również się odnosi do tego zadania dlatego nie chciałem zakładać osobnego tematu.
"Utwórz klasę MyPrimeVerifier z statyczną metodą isPrime(int), sprawdzającą czy dostarczona ze stosu liczba jest liczbą pierwszą. Jeżeli okaże się że nie jest, należy podnieść wyjątek." Co ten wyjątek ma tutaj niby robić? Nie bardzo rozumiem sens tego. Jeżeli ma po prostu być to mam zrobić własną klasę dziedziczącą po Exception i stworzyć własny wyjątek jeżeli liczba nie jest liczbą pierwszą?

0

wkładasz string a zdejmujesz jakiś ListElement - to nielogiczne
ListElement powinien być tylko widoczny wewnątrz klasy, programista z zewnątrz nie musi wiedzieć że coś takiego istnieje

 System.out.println("Empty List");

nie powinieneś niczego wypisywać w klasie nie przeznaczonej do prezentacji
tu lepszym byłoby rzucenie wyjątku, ewentualnie zwrócenie nulla

Mógłbyś sie też pokusić na przerobienie kolejki na generyczną, tak żeby można było na nią pchać cokolwiek - albo przynajmniej typ object

  1. Tak
0

Nie bardzo rozumiem o co chodzi w pierwszych dwóch linijkach. Wkładam ListElement (string przypisuję do pola element) i wyjmuje też ListElement. Chyba, że chodzi o metodę peek?

O co chodzi, że tylko wewnątrz klasy? czyli co powinienem gdzie zmienic?

public ListElement pop() throws EmptyStackException{

        ListElement poppedElement = topElement;
        topElement = topElement.getNext();

        return poppedElement;
    }

Tak to powinno wyglądać?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0