Hashing: Programmabsturtz!



  • ich will aus eine verk. liste ein knoten via hashing löschen..leider
    stürtzt das programm bei der delete eingabe ab!
    leider finde ich frn fehler nicht..kann mir jemand helfen?

    const int M=3;
    
    struct knoten			
    {
    	int wert;					
    	struct knoten *next;		
    } *H[M];			
    
    int h(int wert) 
    {
    	return wert%M;
    }
    
    void add(int wert)					
    {			
    	struct knoten *aktuell = new knoten;	
    	aktuell->wert = wert;					
    	aktuell->next = NULL;				
    
    	int i = h(wert);
    
    	if (H[i] == NULL)						
    	{ 
    		H[i]=aktuell;
    	}
    	else								
    	{ 
    		aktuell->next = H[i];				
    		H[i] = aktuell;					
    	}
    }
    
    struct knoten * isMember(int wert)
    {
    	struct knoten *aktuell;
    	aktuell = H[h(wert)];
    	while (aktuell != NULL  && aktuell->wert != wert)
    		aktuell = aktuell->next;
    	return aktuell;
    }
    
    void del(int wert)
    {
    	struct knoten *aktuell;
    	aktuell = isMember(wert);
    	if (aktuell != NULL)
    	{
    		struct knoten *tmp = H[h(wert)];
    		while (tmp->next != aktuell)
    		{
    			tmp = tmp->next;
    			tmp ->next = aktuell->next;
    			delete aktuell;
    		}
    	}
    }
    
    void main()
    {	
    	int wert;
    
    	while (true) 
    	{
    		cout << "Integer (abort with neg. value): ";
    		cin >> wert;
    		if (wert<0) break;
    		add(wert);
    	}
    
    	cout << "Integer to delete: ";
    	cin >> wert;
    	del(wert);
    
    }
    

Anmelden zum Antworten