PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : verkettete listen



leifg
26-02-2002, 21:03
tja hier bin ich schon wieder und will wieder was wissen. vielleicht geht es ein paar leuten schon auf die nerven dass ich so viel poste aber das is mir egal ;) (wer nicht fragt bleibt dumm). und zwar brauche ich ein gutes tutorial für verkettete listen. alles was ich bis jetzt gefunden hab war alles müll. falls noch jemand wissen will wofür ich das brauche: ich möchte ein uno (erweiterte version des kartenspiels mau mau) spiel entwickeln. da erscheint es mir sinnvoll die karten (die die spieler auf der hand halte und der stapel) als verkettete listen zu machen (wenn jemand ne bessere lösung kennt darf er sie mir gerne nennen).

danke im voraus

jgbauman
27-02-2002, 00:51
Naja, nimm doch std::list (doppelt verkette Liste) bzw. std::slist (einfach verkette Liste)

Ich hab natürlich das letzte mal vergessen den wichtigsten Link zur STL zu posten:
http://www.sgi.com/tech/stl/

anda_skoa
27-02-2002, 16:14
Oder std::vector, wenn du nur eine Art Array mit dynamischer Größe brauchst.

Ciao,
_

Trillian
27-02-2002, 20:26
Falls es nicht um C++ gehen sollte:
Ich mach das über die GLib :D
Kannst dir sowas aber auch selber zusammen schreiben ;)

http://developer.gnome.org/doc/API/glib/glib-doubly-linked-lists.html
http://developer.gnome.org/doc/API/glib/glib-singly-linked-lists.html

kehj
03-03-2002, 15:31
Moin,

verkettete Listen sind nicht schwer.
Bsp (nicht objekt-orientiert, Pseudo-Code)

struct liste{
/*Daten*/
Pointer_auf_struct_liste next
}

Das ist die Grundstruktur. In Daten stehen irgendwelche Infos über die Karte drin...
next erhält einen Pointer auf die nächste Karte. Die letzte Karte hat next==nil .

Wenn du vorne anhängen willst:
Also E1 -> E2 -> nil daran E3 wird daraus: E3 -> E1 -> E2 -> nil

struct liste function vorne_anhängen(struct liste neues_Element)
{ neues_Element.next = alte_liste /* alte_liste ist global gespeichert */
return neues_Element;
}

void hinten_anhängen(struct liste neues_Element){
struct liste temp1, temp2
temp1=alte_liste;
temp2 = temp1.next;
while (temp2 !=nil)
{ temp1 = temp1.next;
temp2 = temp1.next;
}
temp1.next = neues_Element;
neues_Element.next = nil;
}

So, ich glaube prinzipiell ist das die Art, wie ich verkettete Listen (in C) implementiere.
Ich habe den Pseudo(!)-Code nicht getestet, ist nur so runtergeschrieben.
Aber ich hoffe mal, daß es funtioniert... ;)

Wenn Fehler drin sind, könnt ihr das ja posten ;)