[C#]Implementacja listy
Mam problem z utworzeniem listy implementującej metody Push i Pop w C#. Wiem, że są specjalne klasy, np. LinkedList, ale nie mogę z tego skorzystać. W C++ do tworzenia takich list używało się wskaźników, w C# z tego co wiem trzeba użyć referencji, tylko za bardzo nie wiem jak to zrobić, także mam nadzieję, że ktoś pomoże 
- gotan06
- Posty: 19
- Rejestracja: 2008-01-14, 16:25
Prosty przykład:
i wykorzystanie:
- Kod: Zaznacz wszystko
using System;
namespace MyListExample
{
public class MyList<T>
{
private Element<T> _head;
private Element<T> _tail;
public void Push(T elem)
{
if (_head == null)
{
_head = new Element<T> { Value = elem };
_head.Next = _head.Previous = null;
_tail = _head;
}
else
{
_tail.Next = new Element<T> { Value = elem };
_tail.Next.Previous = _tail;
_tail = _tail.Next;
}
}
public T Pop()
{
if (_tail == null)
throw new ListEmptyException();
T v = _tail.Value;
_tail = _tail.Previous;
return v;
}
}
public class ListEmptyException: Exception
{
public ListEmptyException()
: base()
{
}
}
public class Element<T>
{
public T Value
{
get;
set;
}
public Element<T> Next
{
get;
set;
}
public Element<T> Previous
{
get;
set;
}
}
}
i wykorzystanie:
- Kod: Zaznacz wszystko
using System;
namespace MyListExample
{
class Program
{
static void Main(string[] args)
{
MyList<int> l = new MyList<int>();
int v;
try
{
v = l.Pop();
}
catch
{
Console.WriteLine("List empty");
}
l.Push(3);
l.Push(2);
l.Push(1);
for (int i = 0; i < 4; i++)
{
try
{
v = l.Pop();
Console.WriteLine(v);
}
catch
{
Console.WriteLine("List empty");
}
}
Console.ReadKey();
}
}
}
You know who you are, don't betray yourself.
-

pejs - Posty: 2048
- Rejestracja: 2006-03-22, 20:03
- Miejscowość: Gdańsk
Spóźnione podziękowania za odpowiedź
Przy okazji pisania nowego tematu zauważyłem, że nie podziękowałem a Twój kod mi się naprawdę przydał
Przy okazji pisania nowego tematu zauważyłem, że nie podziękowałem a Twój kod mi się naprawdę przydał
- gotan06
- Posty: 19
- Rejestracja: 2008-01-14, 16:25
3 posty(ów)
• Strona 1 z 1
Kto jest na forum
Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 1 gość