• 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

Object Storage Arubacloud
0 głosów
767 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 292 wizyt
pytanie zadane 10 listopada 2016 w Java przez Patryk Rafał Bywalec (2,700 p.)
0 głosów
0 odpowiedzi 582 wizyt
pytanie zadane 2 listopada 2016 w Java przez Patryk Rafał Bywalec (2,700 p.)
0 głosów
2 odpowiedzi 197 wizyt
pytanie zadane 22 października 2022 w Systemy operacyjne, programy przez TlenekWodoru Użytkownik (520 p.)

92,551 zapytań

141,399 odpowiedzi

319,529 komentarzy

61,937 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...