Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Noch eine Frage zu linearen Listen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.07.2006, 15:06 Uhr
Yadgar



High!

Wie ist es eigentlich möglich, mittels einer Funktion (der z. B. ein C-String als "Füllmaterial" übergeben wird) eine Liste zu erzeugen? Ich stelle es mir insofern schwierig vor, als dass ich in der Funktion selbst ja keine Elemente erzeugen darf, da diese ja außerhalb der Funktion nicht existieren würden...

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog

Dieser Post wurde am 26.07.2006 um 15:06 Uhr von Yadgar editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.07.2006, 15:33 Uhr
(un)wissender
Niveauwart


Was genau möchtest du den tun? Ich versteh deine Frage nicht ganz. Eine Funktion kann eine liste ohne Problem füllen. Einfach die Liste als Referenz/Pointer übergeben.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.07.2006, 15:47 Uhr
Yadgar



High!


Zitat von (un)wissender:
Was genau möchtest du den tun? Ich versteh deine Frage nicht ganz. Eine Funktion kann eine liste ohne Problem füllen. Einfach die Liste als Referenz/Pointer übergeben.


Die ganze Liste oder bloß das erste Element?

Wenn ich etwas schreibe wie etwa


C++:
struct Element
{
   char wert;
   Element* next;
   Element* previous;
};

void build(char* str, Element* h)
{
   Element* p=h;
   short i=0;
   cout << "Hallo!" << endl;
   cout << str << endl;
   while(p)
   {
      p->wert=str[i];
      p->next->previous=p;
      p=p->next;
      i++;
   }
}



und rufe die Funktion "build" dann auf, etwa so:


C++:
int main()
{
   Element h;
   char Text[]="Testtext";

   build(Text, &h);
}



dann hängt sich das Programm in einer Endlosschleife auf - bzw. ich kann noch nicht einmal sagen, ob es eine Endlosschleife ist, da etwaige Kontrollausgaben in der while-Schleife erst gar nicht ausgeführt werden!

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.07.2006, 16:19 Uhr
0xdeadbeef
Gott
(Operator)


Naja, du musst schon das nächste Element anfordern, also

C++:
void build(char const *str, Element *head) {
  Element *p;

  head->value = *str++; // Erstes Zeichen in Head speichern - bei dummy-listen ist das natürlich einfacher

  for(p = head; *str; ++str) {
    p->next = new Element;
    p->next->previous = p;
    p = p->next;
    p->value = *str;
  }
  p->next = 0;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: