Doppelt verkettete Liste



  • Hallo
    Das Programm wird Fehlerfrei kompiliert und startet auch.
    Aber wenn ich das Programm mit dem Exe Button im debug-Ordner starte blinkt es nur kurz azf und ist weg, warum?

    [code]
    
    #include "stdafx.h"
    
    using namespace System;
    
    ref struct listenelement {
    
    	String^ daten;
    
    	listenelement^ next;
    
    	listenelement^ previous; // Speichert die Vorgängeradresse
    };
    
    	// neues Element am Ende der der Liste eínfügen
    	void einfuegen(String^ datenneu, listenelement^ listenanfang)
    	{
    		// ein Hilfshandle zum Wandern in der Liste
    		listenelement^ hilfsHandle;
    
    		// Hilfshandle an den Anfang der Liste setzen
    		hilfsHandle = listenanfang;
    
    		// ein Hilfshanele zum speichern der Vorgänger Adresse
    		listenelement^ previousAdresse;
    
    		// Durch die Liste gehen, bis das letzte Element erreicht ist
    		while (hilfsHandle->next != nullptr) {
    			hilfsHandle = hilfsHandle->next;
    		}
    		// die Aktuelle Adresse im Hilfshandle zwischen speichern
    		previousAdresse = hilfsHandle;
    
    		// neues Element erstellen
    		hilfsHandle->next = gcnew listenelement;
    
    		//Hilfshandle auf das neue Element setzen
    		hilfsHandle = hilfsHandle->next;
    
    		//Die Vorgängeradresse im neuen Hnadle speichern
    		hilfsHandle->previous = previousAdresse;
    
    		// Zeichenkette im neuen Element eintragen
    		hilfsHandle->daten = datenneu;
    
    		// nullptr wird automatisch gesetzt
    	}
    	// Alle Elemente der Liste ausgeben
    	void ausgeben(listenelement ^listenanfang) {
    		// ein Hilfshandle zum Wandern in der Liste
    		listenelement ^hilfsHandle;
    		// Hilfshandle an den Anfang der Liste setzen
    		hilfsHandle = listenanfang;
    		// erstes Element ausgeben
    		Console::WriteLine("{0}",hilfsHandle->daten);
    		// Soalange das Ende dr Liste noch nicht erreicht ist:
    		//HilfsHandle auf das nächse Element setzen und die Daten ausgeben
    		while (hilfsHandle->next != nullptr) {
    			hilfsHandle = hilfsHandle->next;
    			Console::WriteLine("{0}",hilfsHandle->daten);
    		}
    	}
    
    int main(array<System::String ^> ^args)
    {
        //Handle auf den Anfang der Liste
    	listenelement ^listenanfang;
    
    	//das erste Element per Hand erzeugen
    	listenanfang = gcnew listenelement;
    
    	//Zeichenkette in das erste Element schreiben
    	//nullptr wird automatisch gesetzt
    	listenanfang->daten="Element 0";
    
    	//in einer Schleife mehrere Elemente einfügen
    	for (Int32 schleife=1;schleife<10;schleife++) 
    		einfuegen("Element "+schleife,listenanfang);
    
    	//die Liste ausgeben
    	ausgeben(listenanfang);
    
        return 0;
    }
    

    [/code]

    Vielen Dank im Voraus



  • Was sollte es auch sonst Deiner Meinung nach machen?
    Das ist genau das, was Dein Programm macht. Es wird gestartet, gibt was aus und beendet sich. Was wundert Dich daran?



  • Heinerich schrieb:

    Hallo
    Das Programm wird Fehlerfrei kompiliert und startet auch.
    Aber wenn ich das Programm mit dem Exe Button im debug-Ordner starte blinkt es nur kurz azf und ist weg, warum?

    [code]
    
    #include "stdafx.h"
    
    using namespace System;
    
    ref struct listenelement {
    
    	String^ daten;
    
    	listenelement^ next;
    
    	listenelement^ previous; // Speichert die Vorgängeradresse
    };
    
    	// neues Element am Ende der der Liste eínfügen
    	void einfuegen(String^ datenneu, listenelement^ listenanfang)
    	{
    		// ein Hilfshandle zum Wandern in der Liste
    		listenelement^ hilfsHandle;
    
    		// Hilfshandle an den Anfang der Liste setzen
    		hilfsHandle = listenanfang;
    
    		// ein Hilfshanele zum speichern der Vorgänger Adresse
    		listenelement^ previousAdresse;
    
    		// Durch die Liste gehen, bis das letzte Element erreicht ist
    		while (hilfsHandle->next != nullptr) {
    			hilfsHandle = hilfsHandle->next;
    		}
    		// die Aktuelle Adresse im Hilfshandle zwischen speichern
    		previousAdresse = hilfsHandle;
    
    		// neues Element erstellen
    		hilfsHandle->next = gcnew listenelement;
    
    		//Hilfshandle auf das neue Element setzen
    		hilfsHandle = hilfsHandle->next;
    
    		//Die Vorgängeradresse im neuen Hnadle speichern
    		hilfsHandle->previous = previousAdresse;
    
    		// Zeichenkette im neuen Element eintragen
    		hilfsHandle->daten = datenneu;
    
    		// nullptr wird automatisch gesetzt
    	}
    	// Alle Elemente der Liste ausgeben
    	void ausgeben(listenelement ^listenanfang) {
    		// ein Hilfshandle zum Wandern in der Liste
    		listenelement ^hilfsHandle;
    		// Hilfshandle an den Anfang der Liste setzen
    		hilfsHandle = listenanfang;
    		// erstes Element ausgeben
    		Console::WriteLine("{0}",hilfsHandle->daten);
    		// Soalange das Ende dr Liste noch nicht erreicht ist:
    		//HilfsHandle auf das nächse Element setzen und die Daten ausgeben
    		while (hilfsHandle->next != nullptr) {
    			hilfsHandle = hilfsHandle->next;
    			Console::WriteLine("{0}",hilfsHandle->daten);
    		}
    	}
    
    		
    int main(array<System::String ^> ^args)
    {
        //Handle auf den Anfang der Liste
    	listenelement ^listenanfang;
    
    	//das erste Element per Hand erzeugen
    	listenanfang = gcnew listenelement;
    
    	//Zeichenkette in das erste Element schreiben
    	//nullptr wird automatisch gesetzt
    	listenanfang->daten="Element 0";
    
    	//in einer Schleife mehrere Elemente einfügen
    	for (Int32 schleife=1;schleife<10;schleife++) 
    		einfuegen("Element "+schleife,listenanfang);
    
    	//die Liste ausgeben
    	ausgeben(listenanfang);
    
        return 0;
    }
    

    [/code]

    Vielen Dank im Voraus

    Es müsste auch über den Button im debug-Ordner starten und die zehn Listeneinträge anzeigen, wie in Visual C++ 2005 Express Edition und das tut es nicht, das wundert mich und deshalb muss etwas falsch sein. Ich weis nicht was?



  • Heinerich schrieb:

    Heinerich schrieb:

    Hallo
    Das Programm wird Fehlerfrei kompiliert und startet auch.
    Aber wenn ich das Programm mit dem Exe Button im debug-Ordner starte blinkt es nur kurz azf und ist weg, warum?

    [code]
    
    #include "stdafx.h"
    
    using namespace System;
    
    ref struct listenelement {
    
    	String^ daten;
    
    	listenelement^ next;
    
    	listenelement^ previous; // Speichert die Vorgängeradresse
    };
    
    	// neues Element am Ende der der Liste eínfügen
    	void einfuegen(String^ datenneu, listenelement^ listenanfang)
    	{
    		// ein Hilfshandle zum Wandern in der Liste
    		listenelement^ hilfsHandle;
    
    		// Hilfshandle an den Anfang der Liste setzen
    		hilfsHandle = listenanfang;
    
    		// ein Hilfshanele zum speichern der Vorgänger Adresse
    		listenelement^ previousAdresse;
    
    		// Durch die Liste gehen, bis das letzte Element erreicht ist
    		while (hilfsHandle->next != nullptr) {
    			hilfsHandle = hilfsHandle->next;
    		}
    		// die Aktuelle Adresse im Hilfshandle zwischen speichern
    		previousAdresse = hilfsHandle;
    
    		// neues Element erstellen
    		hilfsHandle->next = gcnew listenelement;
    
    		//Hilfshandle auf das neue Element setzen
    		hilfsHandle = hilfsHandle->next;
    
    		//Die Vorgängeradresse im neuen Hnadle speichern
    		hilfsHandle->previous = previousAdresse;
    
    		// Zeichenkette im neuen Element eintragen
    		hilfsHandle->daten = datenneu;
    
    		// nullptr wird automatisch gesetzt
    	}
    	// Alle Elemente der Liste ausgeben
    	void ausgeben(listenelement ^listenanfang) {
    		// ein Hilfshandle zum Wandern in der Liste
    		listenelement ^hilfsHandle;
    		// Hilfshandle an den Anfang der Liste setzen
    		hilfsHandle = listenanfang;
    		// erstes Element ausgeben
    		Console::WriteLine("{0}",hilfsHandle->daten);
    		// Soalange das Ende dr Liste noch nicht erreicht ist:
    		//HilfsHandle auf das nächse Element setzen und die Daten ausgeben
    		while (hilfsHandle->next != nullptr) {
    			hilfsHandle = hilfsHandle->next;
    			Console::WriteLine("{0}",hilfsHandle->daten);
    		}
    	}
    
    		
    int main(array<System::String ^> ^args)
    {
        //Handle auf den Anfang der Liste
    	listenelement ^listenanfang;
    
    	//das erste Element per Hand erzeugen
    	listenanfang = gcnew listenelement;
    
    	//Zeichenkette in das erste Element schreiben
    	//nullptr wird automatisch gesetzt
    	listenanfang->daten="Element 0";
    
    	//in einer Schleife mehrere Elemente einfügen
    	for (Int32 schleife=1;schleife<10;schleife++) 
    		einfuegen("Element "+schleife,listenanfang);
    
    	//die Liste ausgeben
    	ausgeben(listenanfang);
    
        return 0;
    }
    

    [/code]

    Vielen Dank im Voraus

    Es müsste auch über den Button im debug-Ordner starten und die zehn Listeneinträge anzeigen, wie in Visual C++ 2005 Express Edition und das tut es nicht, das wundert mich und deshalb muss etwas falsch sein. Ich weis nicht was?

    tut es doch 🙂 nur das DOS-Fenster wird halt automatisch wieder geschlossen, wenn sich das Programm beendet hat. Wenn du es aber über "ausführen" im Visual Studio machst, wird zusätzlich ein programm gestartet, welches am schluss deines Programms auf eine Tastatureingabe wartet um dann das Fenster zu schließen.

    Entweder du baust so eine Abfrage in dein Programm ein, oder du öffnest erst die Eingabeaufforderung und startest dann von dort aus dein Programm.


Anmelden zum Antworten