Как мне получить доступ к определенному указателю в массиве структур?

0

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

class List 
{
public:
 List();

private:
 struct L_Node
  {
    L_Node *next;
    L_Node *prev;
    int     iValue;  // not actually doing anything in this example
  }

 L_Node head[4];
 L_Node tail[4];
}

В конструкторе я хочу, чтобы головка [0] указывала на хвост [0] next, head [1] рядом с хвостом [1] дальше и т.д., Причем * prev указывал от хвоста к голове, чтобы сформировать дважды связанный список. Для головы, prev = NULL, а в хвосте next = NULL. В промежутке между головным и хвостовым массивами, я пытаюсь иметь некоторые динамические экземпляры L_Node.

На данный момент, в моем конструкторе, у меня есть

head->next = new L_Node;
head->prev = NULL;

tail->next = NULL;
tail->prev = new L_Node;

head->next->next = tail;
tail->prev->prev = head;

Он компилируется, однако я не уверен, как он себя ведет. Голова [0] указывает на динамическую структуру на хвост [0] и так далее?

Заранее спасибо за любую помощь или советы.

РЕДАКТИРОВАТЬ:

был бы typedef для указателя, такого как

typedef L_Node *L_Ptr;

помочь?

Теги:
arrays
pointers
struct
structure

1 ответ

0
Лучший ответ

Из вашего описания это то, что вам нужно в конструкторе List:

List::List()
{
   for (int i = 0; i != 4; ++i )
   {
      head[i].next = tail[i];
      tail[i].prev = head[i];
   }
}

Я бы добавил конструктор в L_Node чтобы иметь нормальные начальные значения для его данных-членов.

L_Node() : next(NULL), prev(NULL), iValue(0) {}
  • 0
    Спасибо! Я сходил с ума от этого, я продолжал использовать стрелку (->) по любой причине, ха-ха
  • 0
    Рад, что мог помочь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню