Usuwanie elementu o zadanej wartości z listy jednokierunkowej

0

Cześć! Mam problem z usuwaniem elementu listy o wprowadzonej wartości. Czy mógłby ktoś dać mi jakąś wskazówkę? Już trochę siedzę nad tą funkcją i jakoś nie mogę wpaść na pomysł co tu jest nie tak.

 void Lista::delchosen(int v)
{
	Node *p = new Node;
	Node *e = head;
	p->data = v;
	while(e!= NULL)
	{
		if(e->data == v)
		{
			if(p == head)
				pop();
			else
			{
				e->next = p->next;
				delete p;
				p = e->next;
			}
		}
		else
		{
			e = e->next;
		}
	}

} 

W programie jest też kilka innych funkcji które działają bez zarzutu jeśli w mainie nie użyję wyżej wymienionej.

0

http://4programmers.net/C/Artykuły/Lista_jednokierunkowa_-_C
LinkedList_Destroy
Znajdź sobie tylko indeks, ale uprzedzam - operowanie na indeksach przy liście to zły pomysł.

2
Nazwij zmienne sensownie, a nie "p", "e", "v"
Node *p = new Node;

Po co alokujesz pamięć? Do niczego to nie jest potrzebne, bo p jest tylko wskaźnikiem, który ma wskazywać na istniejący element (choć tego nie robi).

p->data = v;

Po co to?

e->next = p->next;

Odpowiedz na jedno zajebiście, ale to zajebiście ważne pytanie: jaką wartość ma p->next?

1 użytkowników online, w tym zalogowanych: 0, gości: 1