У меня есть структура с двумя указателями, которые я храню внутри массива того же типа. Я не уверен, как получить доступ к указателям в каждом конкретном индексе массива.
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;
помочь?
Из вашего описания это то, что вам нужно в конструкторе 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) {}