• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java palindromy przy użyciu stosu

VPS Starter Arubacloud
0 głosów
761 wizyt
pytanie zadane 30 października 2016 w Java przez Patryk Rafał Bywalec (2,700 p.)

Jak w tytule mam napisać program który sprawdza czy wyraz jest palindromem przy użyciu stosu napisałem sam stos jednakże nie wiem jak go odwrócić

oto kod

  private Element top;

    public Stos()
    {
        this.top = null;
    }
    
    @Override
    public void push(String i) {
        Element pom = new Element(i,top);
        top = pom;
    }

    @Override
    public int pop() {
        if(!this.isEmpty())
        {
            top = top.getNext();
        }
        return 0;
    }

    @Override
    public String peek() {
        return top.getDane();
    }

    @Override
    public boolean isEmpty() {
        if(this.top == null) return true;
        return false;
    }

    @Override
    public void print() {
        
        if(!this.isEmpty())
        {
            while(!this.isEmpty())
            {
                System.out.println(top.getDane());
                top = top.getNext();
            }
        }
      
    }

    @Override
    public void clear() {
        if(!this.isEmpty())
        {
            while(!this.isEmpty())
            {
                top = top.getNext();
            }
        }
    }
    

proszę o jakieś wskazówki

2 odpowiedzi

0 głosów
odpowiedź 30 października 2016 przez Porcupine Nałogowiec (31,560 p.)

1) Jesteś pewien, że masz samemu napisać ten stos? Bo w Javie jest już gotowy stos LINK.

2) Jak wygląda Twoja klasa Element? 

3) 

this.top = null;

jest niepotrzebne. Każda zmienna typu referencyjnego automatycznie po deklaracji przyjmuje wartość null. 

komentarz 30 października 2016 przez Patryk Rafał Bywalec (2,700 p.)

Musi być zachowana struktura a oto klasa Element

 * @author Patryk
 */
public class Element {
    
    private Element next;
    private String dane;
    
    public Element(String dane,Element next)
    {
        this.dane = dane;
        this.next = next;
    }
    
    public String getDane()
    {
        return this.dane;
    }
    
    public Element getNext()
    {
        return this.next;
    }
    
}

 

0 głosów
odpowiedź 30 października 2016 przez mbabane Szeryf (79,280 p.)
Mozna to zrobic np. w ten sposob ze pobierasz stringa, nastepnie wrzucasz cale zdanie kolejno po literce na stos, a potem odczytujesz/zdejmujesz ze stosu i jest automatycznie odwrocone.
komentarz 30 października 2016 przez Patryk Rafał Bywalec (2,700 p.)
edycja 30 października 2016 przez Patryk Rafał
możesz jaśniej najlepiej przykład?
komentarz 30 października 2016 przez Patryk Rafał Bywalec (2,700 p.)
bo na tablicy jest łatwo a na stosie nie bardzo wiem jak to porównać
komentarz 30 października 2016 przez mbabane Szeryf (79,280 p.)
czy wiesz na czym polega stos?
komentarz 30 października 2016 przez Sareley Gaduła (4,740 p.)

Przykładowy kod który odwraca tekst z wykorzystaniem stosu wbudowanego w jave.

import java.util.Stack;

public class HelloWorld {
  public static void main(String[] args) {
    	
    	
    	String word = "poligrom";
        Stack<Character> wordStack = new Stack<>();
        String finalWord = "";
        
        for(Character item : word .toCharArray()){
            wordStack.push(item);
        }

        for(int i = 0; i < word.length(); i++){
        finalWord += wordStack.pop();
    }
    
    System.out.println(finalWord );
  }
}

 

komentarz 30 października 2016 przez Patryk Rafał Bywalec (2,700 p.)
wiem kładziesz element który staje się wierzchołkiem
komentarz 30 października 2016 przez mbabane Szeryf (79,280 p.)

No wlasnie i ten wierzcholek jest aktualnie pierwszym elementem, a ostatnim dodanym, czyli jak wrzuce kolejno litery: a, b, c to na stosie, po ich zdjeciu beda "wygladaly" tak: c, b, a to jest zasadnicza cecha stosu tak zwane LIFO (last in, first out): http://eduinf.waw.pl/inf/alg/001_search/0100.php

Dalem Ci zreszta gotowca wczoraj: http://forum.pasja-informatyki.pl/191637/implementacja-stos-pytanie#a191644 

komentarz 30 października 2016 przez Patryk Rafał Bywalec (2,700 p.)
Dobra już dałem sobie radę wczytalem do stringa i sprawdzilem sobie charat czy jest palindromem
komentarz 31 października 2016 przez Patryk Rafał Bywalec (2,700 p.)
  @Override
    public boolean print() {
        String pom = "";
        if(!this.isEmpty())
        {
            while(top != null){
                
                for(int i=0; i<top.getDane().length(); i++)
                {
                   pom += top.getDane().charAt(i);
                }
                top = top.getNext();
            }
            
        }
       boolean jest = false;
       for(int i=0; i<pom.length() - 1; i++)
       {
           jest = false;
           if(pom.charAt(i) == pom.charAt(pom.length() -i - 1))
           {
               jest = true;
           }else{
               break;
           }
       }
     return jest;
    }
    

 

Podobne pytania

0 głosów
2 odpowiedzi 288 wizyt
pytanie zadane 10 listopada 2016 w Java przez Patryk Rafał Bywalec (2,700 p.)
0 głosów
0 odpowiedzi 580 wizyt
pytanie zadane 2 listopada 2016 w Java przez Patryk Rafał Bywalec (2,700 p.)
0 głosów
2 odpowiedzi 191 wizyt
pytanie zadane 22 października 2022 w Systemy operacyjne, programy przez TlenekWodoru Użytkownik (520 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...