VS 2005 Pro spinnt (oder doch eher ich?)



  • Hi bei folgenden Code:

    //list.cpp
    #include <iostream>
    using namespace std;
    
    struct Knoten
    {
    	int daten;
    	Knoten *next;
    };
    
    //Anfang der Liste
    Knoten *Anfang = 0;
    
    //Funktion zum einfügen neuer Elemente
    Knoten *insertKnoten(int &val)
    {
    	//Ist noch kein Element in der Liste,
    	//dann fügen wir das erste am Anfang ein!
    	if(Anfang == 0)
    	{
    		Knoten *node = new Knoten;
    		node->daten = val;
    		node->next = 0;
    		Anfang = node;
    		return Anfang;
    	}
    	//Es sind bereits Elemente in der Liste,
    	//dann soll das neue hinten angehängt werden
    	else
    	{
    		Knoten *node = Anfang;
    		Knoten *newNode;
    		while(node->next !=0)
    		{
    			node = node->next;
    		}
    		newNode = new Knoten;
    		newNode->daten = val;
    		newNode->next = newNode;
    		return Anfang;
    	}
    }
    
    //Alle Elemente der Liste anzeigen
    void showKnoten(const Knoten *n)
    {
    	if(Anfang==0)
    	{
    		cout << "Die Liste ist leer!\n";
    	}
    	else
    	{
    		cout << "1.Element: " << n->daten << "\n";
    		for(int i = 2; n->next !=0;i++)
    		{
    			n = n->next;
    			cout << i << ".Element: " << n->daten << "\n";
    		}
    	}
    }
    
    //Das erste Element mit dem Wert dat aus der Liste löschen
    Knoten *deleteKnoten(int dat)
    {
    	if(Anfang == 0)
    	{
    		cout << "Die Liste ist leer\n";
    	}
    	//Ist das erste Element das von uns gesuchte?
    	if(Anfang->daten == dat)
    	{
    		Knoten *del = Anfang;
    		if(Anfang->next != 0)
    		{
    			Anfang = Anfang->next;
    		}
    		delete del;
    
    	}
    	//Die komplette Liste nach dem gesuchten
    	//Element durchlaufen
    	else
    	{
    		Knoten *node = Anfang;
    		while(node->next != 0 && node->next->daten != dat)
    		{
    			node = node->next;	
    		}
    		if(node->next ==0)
    		{
    			cout << "Element zum Löschen kommt nicht"
    				<< "in der Liste vor\n";
    		}
    		else
    		{
    			//das zu löschende Element an del zuweisen
    			Knoten *del = node->next;
    			//Einen Hilfszeiger hinter das zu löschende Element
    			Knoten *help = del->next;
    			//Das zu löschende Element "aushängen"
    			node->next = help;
    			delete del;
    		}
    	}
    	return Anfang;
    }
    
    int main(void)
    {
    	Knoten *node;
    	int auswahl, ival;
    	do
    	{
    		cout << "Eine einfache verkettete Liste\n";
    		cout << "------------------------------\n";
    		cout << "-1-  Neues Element hinzufügen\n";
    		cout << "-2-  Alle Elemente ausgeben\n";
    		cout << "-3-  Einzelnes Element löschen\n";
    		cout << "-4-  Programm Beenden\n\n";
    		cout << "Ihre Auswahl : ";
    		cin >> auswahl;
    		switch( auswahl)
    		{
    		case 1 : 
    			cout << "Daten eingeben: ";
    			cin >> ival;
    			node = insertKnoten(ival);
    			break;
    		case 2 :
    			showKnoten(node);
    			break;
    		case 3 : 
    			cout << "Wert zum Löschen eingeben : ";
    			cin >> ival;
    			node = deleteKnoten( ival);
    			break;
    		case 4 : 
    			break;
    		default :
    			cout << "Falsche Menüauswahl?\n";
    		}
    	return 0;
    }
    

    kommt der Fehler:

    Fehler	1	fatal error C1075: Dateiende erreicht, bevor das zugehörige Element für das linke Element Klammer "{" in "c:\users\xxx\documents\visual studio 2005\projects\listen 1\listen 1\list.cpp(109)" gefunden wurde	c:\users\philipp\documents\visual studio 2005\projects\listen 1\listen 1\list.cpp	144
    

    ich bin soweit mitgekommen das es an Visual Studio liegt
    was kann ich dagegen tun? habe alles Updates (Vista updates etc)
    Danke schon mal

    mfg
    TDK



  • int main(void)
    {
        Knoten *node;
        int auswahl, ival;
        do
        {
        ...
            switch( auswahl)
            {
            case 1 :
                cout << "Daten eingeben: ";
                cin >> ival;
                node = insertKnoten(ival);
                break;
            case 2 :
                showKnoten(node);
                break;
            case 3 :
                cout << "Wert zum Löschen eingeben : ";
                cin >> ival;
                node = deleteKnoten( ival);
                break;
            case 4 :
                break;
            default :
                cout << "Falsche Menüauswahl?\n";
            }
        ...
        } // VERGESSEN
        return 0;
    }
    

    Das Problem sitzt natürlich VOR dem Computer. Immer schön die Klammern
    nachzählen. 😃



  • Fehler	1	error C2059: Syntaxfehler: 'return'	c:\users\philipp\documents\visual studio 2005\projects\listen 1\listen 1\list.cpp	143
    

    ??? VS zeigt mir den Fehler bei "return 0;" an

    EDIT: Jesus sind wir alle blind -.-
    Mit einer nicht geschlossenen do schleife^^
    da gehört moch "while (auswahl !=4)" hin^^ danke!


Anmelden zum Antworten