// my print in normal order

public void printList()
    {   
        ListElem curr = head;

        while(curr != null)
        {
            System.out.print(curr.getData() + "->");
            curr = curr.getNext();
        }
    }

// my attempt to print in reverse order

public void printListRev()
    {   
        ListElem curr = head;

        if(curr == null) return;

        printListRev();

        System.out.print(curr.getData() + " ");
    }

Ponieważ ta metoda nie przyjmuje żadnych argumentów, nie jestem pewien, jak zrobić to rekurencyjnie. Próbuję dowiedzieć się, jak wydrukować elementy (ciągi znaków) na pojedynczo połączonej liście.

0
Jack Owen 19 listopad 2019, 18:08
2
Nie możesz dodać argumentu do printListRev?
 – 
Eran
19 listopad 2019, 18:09
Tak, ale staram się to zrobić bez dodawania żadnego
 – 
Jack Owen
19 listopad 2019, 18:11
Jeśli nie możesz dodać argumentu, po prostu utwórz prywatną metodę pomocniczą
 – 
Wojtek Mlodzianowski
19 listopad 2019, 18:12
Czy jest sposób bez dodawania metody prywatnego pomocnika?
 – 
Jack Owen
19 listopad 2019, 18:15
1
Korzystanie z rekurencji wymaga przekazania argumentu.
 – 
Marlin Pierce
19 listopad 2019, 18:24

2 odpowiedzi

Nie jest łatwo zrobić z listą pojedynczo połączoną, gdyby była to lista podwójnie połączona i można było uzyskać ostatni element (element ogonowy), to wykonanie w odwrotnej kolejności byłoby łatwiejsze, ale jak to mówisz jest listą pojedynczo połączoną Sugeruję, aby załadować wszystkie elementy do tablicy w funkcji w odwrotnej kolejności i wydrukować ją bezpośrednio, jest to obejście innych metod, nie jest możliwe ... to jest moja spostrzeżenie

0
pavan kumar 19 listopad 2019, 18:26

Po prostu przeprowadź iterację listy i utwórz ciąg, dołączając dane każdego elementu:

public void printListRev()
    {   
        ListElem curr = head;
        String result = "";
        while(curr != null)
        {
            result = curr.getData() + "->" + result;
            curr = curr.getNext();
        }
        System.out.print(result);
    }
0
StephaneM 19 listopad 2019, 18:36