Пусть я реализую проект связного списка, и я STRUCT узел:Стрелка LinkedList
struct node{
node *prev;
node *next;
int data
};
node *sentinel;
каждый раз, когда я использую добавить() метод, который держать добавление элементов в списке, как:
add(1); //First node
add(2); //Second node
add(3); //Third node
add(4); //Fourth node
add(5); //Fifth node;
Так после того, как я закончу, добавив, и я хочу сделать тест позволяет сказать:
node *temp = sentinel->next;
Так же точки временные к первому Eleme нт? что, если я делаю:
node *temp = (sentinel->next)-next;
делает это временные точки ко второму элементу сейчас?
Если да, то почему? И какова основная цель
node *sentinel;
Я только начинаю учить себя C++. Я буду очень благодарен вам, ребята, ответы.
Edit:
У меня будет конструктор, инициализирующий дозор, как: sentinel = new node();
Я скажу, что мой метод add() похож;
add(int data, index)
{
sentinel *temp = (sentinel->head); //Lets say temp points to the head of list here.
node *toAdd = new node();
toAdd->data = data;
toAdd->next -> temp;
temp->next = toAdd;
}
Другие, чем синтаксис декларации структуры, это ближе к вопросу C, чем C++. Но кроме этого * вам не нужно выделение узла-дозорчика. * Если вы собираетесь использовать этот маршрут (и я бы не хотел, я бы использовал 'std :: list <>' или 'std :: vector < > ', или даже' std :: deque <> '), тогда' nullptr' делает чертовски точное контрольное значение, которое легко тестируется, и никогда не вводит несколько раздражающих проблем, поскольку «дозорные» узлы всегда заканчиваются всплытием. В: Мой список пуст? A: 'if (! Head_ptr)' – WhozCraig
Представленный вами код не содержит достаточной информации для ответа на ваш вопрос. Как реализовано 'add' и как инициализируется и используется' sentinel'? –