N-tes Element in einer einfach-verketteten Liste löschen...
-
Hi,
Also ich möchte ein beliebig positioniertes Element in einer einfach verketteten Liste löschen.
Mein Code sieht bisher so aus:
void CList::Delete(unsigned int uiPos) { if(!uiPos) { CEntry* pTemp = _pFirst; _pFirst = _pFirst->_pNext; delete pTemp; } else { CEntry *pCell = _pFirst, *pNext = NULL; for(unsigned int uiCount = 0; pCell != NULL; pCell = pNext, uiCount++) { pNext = pCell->_pNext; if(uiCount == uiPos) { CEntry* pTemp = pCell; pCell = pCell->_pNext; delete pTemp; break; } } } }Das Problem ist, das er beim Abbauen des Objekts (also beim Aufruf des Destruktors) immer abstürtzt (Speicherzugriffsverletzung). Genauer: Beim delete.
Der Destruktor sieht so aus:
CList::~CList(void) { CEntry *pCell = _pFirst, *pNext = NULL; for( ; pCell != NULL; pCell = pNext) { pNext = pCell->_pNext; delete pCell; } }Ich hoffe ihr könnt mir helfen, danke schonmal
.
-
Es muss eher so sein:
prev->next = pcell->next;