mirror of
https://hub.njuu.cf/TheAlgorithms/C-Plus-Plus.git
synced 2023-10-11 13:05:55 +08:00
fix: Doubly Linked List algorithm bug
This commit is contained in:
parent
d963df6fa6
commit
f55c76d0fb
@ -38,12 +38,36 @@ void insert(int x)
|
|||||||
void remove(int x)
|
void remove(int x)
|
||||||
{
|
{
|
||||||
node *t = start;
|
node *t = start;
|
||||||
while (t->val != x)
|
while (t != NULL && t->val != x)
|
||||||
{
|
{
|
||||||
t = t->next;
|
t = t-> next;
|
||||||
}
|
}
|
||||||
|
if (t == NULL)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// if first element is removed
|
||||||
|
if (t->prev == NULL)
|
||||||
|
{
|
||||||
|
if (t->next == NULL)
|
||||||
|
{
|
||||||
|
start = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
start = t->next;
|
||||||
|
start->prev = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (t->next == NULL)
|
||||||
|
{
|
||||||
|
t->prev->next = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
t->prev->next = t->next;
|
t->prev->next = t->next;
|
||||||
t->next->prev = t->prev;
|
t->next->prev = t->prev;
|
||||||
|
}
|
||||||
delete t;
|
delete t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user