Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[Java] Implementacja listy jednokierunkowej (problem przy dodawaniu).

#1
[Java] Implementacja listy jednokierunkowej (problem przy dodawaniu).
Witam!

Otóż próbuję sobie zaimplementować własną listę jednokierunkową w języku Java i aktualnie mam problem przy dodawaniu kolejnego elementu do listy . Mógłby mnie ktoś nakierować co jest nie tak w kodzie? Z góry dziękuję za odpowiedzi.

Edit: edytowałem metodę push. Teoretycznie wszystko działa, lecz bardzo bym prosił o spojrzenie na kod, gdyż chciałbym być w 100% pewny, że wszystko jest poprawnie napisane(nie można wyrabiać złych nawyków... ^^).




Kod PHP:
import java.util.*;


 class 
Rek
{
    
    
    
int dana;
    
Rek next;

    
Rek (int dRek n)
    {
        
        
dana=d;
        
next=n;     
    }
    
}

 class 
Lista
{
    
    
Rek pocz;
        
Rek kon
    
    Lista 
()
    {
        
pocz=null;
                
kon=null;

    }

    
    
void push (int d,Rek x)
    {
    
        
Rek nowy;
        if (
pocz==null && kon==null)
        {
            
            
nowy=new Rek (d,null);
            
pocz=nowy;
            
kon=nowy;
            
        }
        
        else if (
kon!=null)
            
        {
            
nowy=new Rek (d,kon.next);
            
            
kon.next=nowy;
            
kon=nowy;
        }    
        
    }
    
    
void show ()
    {
        
Rek nowy=pocz;
        
        if (
nowy==null)
        {
            
System.out.println("Lista jest pusta!");
            return;
        }
        else
        {
            while (
nowy!=null)
            {
            
            
System.out.println(nowy.dana);
            
nowy=nowy.next;
            }
        }
        
        
    }
}


public class 
Main
{

    public static 
void main(String[] args)
    {
        
int wyb=5,da;
        
        
Scanner wczytaj=new Scanner (System.in);

        
Lista s=new Lista();

        
Rek w=null;
        do
        {
            
wyb=wczytaj.nextInt();
            
            switch (
wyb)
            {
                case 
1:
                {
                    
                    
da=wczytaj.nextInt();
                    
s.push(da,w);    
                break;
                }
                
                case 
2:
                {
                    
s.show();
                break;
                }
                
                case 
3:
                {
                break;
                }
                
                case 
4:
                {
                break;
                }
            
            }
            
            
        } while (
wyb!=0);        

    }


 System operacyjny: windows_seven Przeglądarka: chrome
#2
RE: [Java] Implementacja listy jednokierunkowej (problem przy dodawaniu).
Metoda push powinna przyjmować tylko daną (po co jej Rek?)
Kod:
void push (int d)
   {
        Rek nowy=new Rek (d,null);
       if (pocz==null && kon==null)
       {
           pocz=nowy;
           kon=nowy;
       }
       else   
       {
           kon.next=nowy;
           kon=nowy;
       }    
   }

Ja bym to tak napisał, co nie zmienia faktu, że kod jest niestaranny (używaj getterów i setterów do ustawiania / pobierania wartości)
 System operacyjny: windows_seven Przeglądarka: firefox
#3
RE: [Java] Implementacja listy jednokierunkowej (problem przy dodawaniu).
Musiałem tak napisać, ponieważ konstruktor jest został stworzony tak:

Rek (int d, Rek n)
{

dana=d;
next=n;
}

Rozumiem, że ten Rek w konstruktorze też nie jest potrzebny?
 System operacyjny: windows_ten Przeglądarka: chrome
#4
RE: [Java] Implementacja listy jednokierunkowej (problem przy dodawaniu).
Bez sensu jest ten twój zapis, bo kon.next zawsze powinien być nullem (następnik końca przecież zawsze jest nullem), więc jest niepotrzebny.
 System operacyjny: windows_seven Przeglądarka: firefox
Programy: Polecane / Nowe / Inne




Podobne wątki ([Java] Implementacja listy jednokierunkowej (problem przy dodawaniu).)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Błąd przy uruchamianiu programu w Java z wiersza poleceń Physicist 3 5749 30.08.2019, 14:16
Ostatni post: Physicist
  Java początkujący problem ze zrozumieniem kodu MatL70 6 10551 20.06.2017, 12:24
Ostatni post: MatL70
  [C# WPF] Dodawanie elementów z listy do DataGrid Kamil 1 2 11391 25.05.2017, 20:03
Ostatni post: Kamil 1

Skocz do: