» »

[C#] Naloga - delo s seznami

[C#] Naloga - delo s seznami

tnt ::

Pozdravljeni!

Imam sledečo nalogo:

[začetek]
Pripravi linearni seznam (linear list ali povezana lista) z imenom razreda LinearCollection, ki implementira naslednje metode:
- public bool Add(NodeElement element) – doda element na konec seznama,
- public NodeElement Get() – vrne element z začetka seznama, iz seznama pa ga pobriše,
- public void Print() – izpiše vsebino linearnega seznama na ekran (for each NodeElement call it’s method Print());

Elementi seznama (vozlišča) naj dedujejo tip razreda NodeElement in so tipa »long« (NodeElementLong) in »string« (NodeElementString). Razred NodeElement naj ima virtualno metodo Print(), ki jo dedujoča razreda implementirata po svoje. To metodo kliče metoda razreda LinearCollection.Print, ko se sprehaja po seznamu.

Oba podrazreda morata ustrezno implementirati tudi metode vmesnika »ICloneable«. Uporaba generikov je zaželjena, ne pozabi tudi na pravilno implementacijo vmesnika »IDisposable« v razredu NodeElement, ker se v prihodnosti lahko pojavi podrazred, ki lahko ima memory leak.
Nikjer ne smeš uporabiti rekurzije.
[konec]

Sam se poskusil sestavit približno ogrodje brez generikov na sledeč način:

namespace Naloga2
{
class NodeElement
{
public virtual void Print()
{
}
}
class NodeElementLong : NodeElement
{
public long VLong { get; set; }

public override void Print()
{
base.Print();
}
}
class NodeElementString : NodeElement
{
public string VString { get; set; }

public override void Print()
{
base.Print();
}
}

class LinearCollection : NodeElement
{
public bool Add(NodeElement element)
{
return true;
}
public NodeElement Get()
{
NodeElement novElement = new NodeElement();
return novElement;
}
public override void Print()
{
//foreach ...
}
}

class Program
{
static void Main(string[] args)
{

}
}
}

Sedaj pa ne vem kako naj naredim linearni seznam z imenom razreda LinearCollection?
Ali mi lahko kdo pomaga spisati verzijo z uporabo generikov? Ne vem tudi kako uporabiti ICloneable in IDisposable?

Moram reči, da mi je sama terminologija naloge precejšnja uganka, pa sem že kar nekaj programiral.

Hvala in lep pozdrav.

tripleh ::

To pa ni lepo da na tak način poskušaš priti v službo oziroma zlagati CV. Komaj čakam da pride k nam kak nov študent.
In pa se ti ne zdi, da boš s spraševanjem po forumih in z ostalimi bedarijami izgubil ogromno časa.

Zgodovina sprememb…

  • spremenilo: tripleh ()

detroit ::

tole brez generics je en fail imo, drugače pa imaš predavanja oapsa1 na friju smo se lotil tega na podobn način, zadeva je super enostavna ....tudi zame :P
Skero

tnt ::

tripleh:
Že dalj časa prebiram forum in sem na njem zasledil veliko vprašanj glede nalog iz raznih področij. Zgleda, da po tvoje pomeni, če nekaj vprašaš bedarijo oz. izgubo časa?

detroit:
Nismo vsi hodili na FRI in obiskovali omenjenih predavanj. Super, da je zate naloga enostavna. Ampak s tem mi praktično nisi nič pomagal.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Davčne blagajne (strani: 1 2 3 424 25 26 27 )

Oddelek: Programiranje
1344332564 (72567) Macketina
»

Naloga iz Putka - UPM

Oddelek: Programiranje
242216 (1552) NejcSSD
»

C# IEnumerable problem

Oddelek: Programiranje
121570 (1339) Genetic
»

C# LinkedList

Oddelek: Programiranje
91181 (1032) PoPon2
»

arrayList, razred chain

Oddelek: Programiranje
51076 (1000) ERGY

Več podobnih tem