lista jednokierunkowa

lista jednokierunkowa
0

Mam listę jednokierunkową, zaimplementowaną metodę add, wszystko ładnie działa, chce tylko zwrócić pole obiektu tej listy, a nie obiekt. Jak to zrobić?
(dokładniej-lista Studentow, chce dostać się do nazwiska)

Maciej Cąderek
Maciej Cąderek
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Warszawa
  • Postów:1264
0

Może zaimplementuj metodę get()?

0

próbowałam, tylko nie wiem czy w tej metodzie dalej mam używać head?

RE
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 9 lat
  • Postów:34
0

Może podaj kod struktury swojej listy, wtedy będzie łatwiej odpowiedzieć.

Maciej Cąderek
Maciej Cąderek
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Warszawa
  • Postów:1264
0

No w prawidlowej liście jednokierunkowej nie dostaniesz się do konkretnego elementu inaczej niz przez przejście od head w górę.

edytowany 1x, ostatnio: Maciej Cąderek
grzesiek51114
grzesiek51114
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 4 lata
  • Postów:2442
0

No nie wiem... O to Ci chodziło?

Kopiuj
import java.util.*;
import java.lang.*;
import java.io.*;


class MyList<T>{
	private class Node{
		public int No;
		public T Value;
		public Node Next;
		
		public Node(T value){
			this.No = 0;
			this.Value = value;
			this.Next = null;
		}
	}
	
	private int _count;
	private Node _root;
	
	public MyList(){
		this._count = 0;
		this._root = null;
	}
	
	public void Add(T value){
		Node newNode = new Node(value);
		newNode.No = this._count;
		
		if(this._root != null){
			newNode.Next = this._root;
			this._root = newNode;
		}
		else this._root = newNode;
		this._count += 1;
	}
	
	public T GetItem(int No){
		Node temp = this._root;
		while(temp != null){
			if(temp.No == No) return temp.Value;
			temp = temp.Next;
		}
		return null;
	}
}

class Person{
	public String Name;
	public String Surname;
	public Person(String name, String surname){
		this.Name = name;
		this.Surname = surname;
	}
}

class Ideone
{
	public static void main (String[] args) throws java.lang.Exception
	{
		MyList<Person> persons = new MyList<Person>();
		persons.Add(new Person("Tomek", "Tomkowski"));
		persons.Add(new Person("Karolina", "Karolinowska"));
		persons.Add(new Person("Kasia", "Kasiowska"));
		persons.Add(new Person("Maciek", "Maciowski"));
		
		Person selected = persons.GetItem(2);
		System.out.println(selected.Name + " " + selected.Surname);
	}
}

http://ideone.com/ntjrR5

Masz dostęp do publicznych pól Name i Surname znalezionego obiektu.

edytowany 4x, ostatnio: grzesiek51114
Zobacz pozostałe 4 komentarze
RE
A tak poza tym to nie wiem kto autorowi tematu kazał implementować listy jednokierunkowej w obiektowym języku programowania. Niezbyt to pożyteczne, ani uczące.
grzesiek51114
grzesiek51114
@rekrut może od razu od Javy zaczęli, pomijając z w ogóle c/c++? I tak wyszło... na czymś musieli się nauczyć.
Maciej Cąderek
Maciej Cąderek
@rekrut Mógłbyś rozwinąć?
RE
Niezbyt jest to pożyteczne, bo są kolekcje, więc implementacja listy jednokierunkowej jest zbyteczna, a niezbyt uczące jest to dlatego, że jak już się implementuje struktury dynamiczne takie jak listy jedno/dwu kierunkowe to chodzi raczej o to, żeby sie nauczyć, oprócz jakichś tam algorytmów, działania na wskaźnikach, a w przypadku języka takiego jak Java, gdzie na wskaźnikach nie działa sie jawnie to nie ma to sensu. PRzynajmniej wg. mnie.
grzesiek51114
grzesiek51114
@rekrut, @Maciej Cąderek no... zarządzania pamięcią raczej autor się nie nauczy :)
0

grzesiek51114 dokładnie o to mi chodziło, dziękuję bardzo, wszystko działa :)

grzesiek51114
grzesiek51114
to zaakceptuj odpowiedź :)
grzesiek51114
grzesiek51114
aha, chyba nie możesz, bo jesteś anonimem.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.