Проблемы с добавлением в круговой связанный список

Я пытаюсь написать двойной круговой связанный список. Насколько я понимаю, код должен на самом деле создать круговой связанный список.

  1. Я начну с особого случая, когда первый узел будет иметь свой предыдущий и следующий узел, указывающий на себя.
  2. После этого создается временный узел, у которого следующий узел указывает на текущий заголовок, а затем текущий заголовок. pPrev указатель указывает обратно на этот временный узел. Это должно установить связь между временным и остальным списком. Тогда я делаю темп pPrev идти к хвосту, а затем к хвосту pNext перейдите к временному режиму, который я думаю, должен обрабатывать округлость А потом, чтобы закрыть, я меняю темп, чтобы стать новым руководителем.

Когда я печатаю из указателя головы, единственное, что печатает, это первый узел снова и снова. Я не вижу, где я иду не так с этой реализацией. Если кто-нибудь мог бы дать мне и советы о том, где я иду не так, я был бы очень признателен. Спасибо заранее

void addNodeToStart(Node*& pHead, Node*& pTail, int input) {
Node* pTemp = new Node;
pTemp->data = input;

if (pHead == NULL) {
pTemp->data = input;
pTemp->pNext = pTemp;
pTemp->pPrev = pTemp;

pHead = pTemp;
pTail = pTemp;
} else {
pTemp->pNext = pHead;
pHead->pPrev = pTemp;
pTemp->pPrev = pTail;
pTail->pNext = pTemp;
}

pHead = pTemp;
}

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]