Member 13455005 Ответов: 2

Как вы используете предыдущий указатель в связанном списке(дважды)


Итак если мы создаем двусвязный список как управляется предыдущий узел
где же тыл указывает
в этом случае я использую задний в качестве текущего указателя

Что я уже пробовал:

node *newnode=new node();
    newnode->v=a;
    if(rear!=NULL)
    {
        rear->next=newnode;
        rear->next->prev=front->next;
        newnode->next=NULL;
        newnode->prev=rear;
        rear=newnode;
    }
    else
    {
        front->next=newnode;
        front->prev=NULL;
        newnode->next=NULL;
        newnode->prev=front;
        rear->prev=front;
        rear=newnode;
    }

2 Ответов

Рейтинг:
6

CPallini

Ричард я уже дал тебе ответ.
Пожалуйста, обратите внимание

Цитата:
узел *newnode=новый узел();
newnode->v=a;
если(заднего!=Нуль)
{
задний->next=newnode;
сзади-и GT;далее-&ГТ;пред=перед->В следующий;
newnode->next=NULL;
newnode->prev=задний;
задний=newnode;
}
еще
{
front->next=newnode;
front->prev=NULL;
newnode->next=NULL;
newnode->prev=фронт;
задний->prev=передний;//<==== ошибка здесь
задний=newnode;
}


В отмеченной строке есть ошибка: вы разыменовываете a NULL указатель (rear).


Рейтинг:
0

Richard MacCutchan

У вас есть два указателя в узле, next указывает на следующий узел в списке или NULL, если их больше нет. previous указывает на (очевидно) предыдущий узел в списке или NULL, если он является первым. Вы управляете своим списком, инициализируя указатель с адресом первого узла в списке. При добавлении или удалении узлов вы соответствующим образом обновляете их связи.


CPallini

5.