Поясните кусочек кода
От: jd-Kevin Россия  
Дата: 01.09.03 13:43
Оценка:
Разбираю исходнички интересной программки и натолкнулся на код, назначение которого мне понятно, а причина использования его непонятна. Т.е что код делает — ясно, но почему код написан именно так?
Вот кусочек, все лишнее я повыкидывал.

class List;

class Node
{
public:
Node();
void InsertAfter(Node *pred);
private:
friend class List;
Node *succ;
Node *pred;
void *ptr;
};

inline
Node::Node(void)
: succ(0),
pred(0),
ptr(0)
{
// empty
}

inline
void
Node::InsertAfter(Node *pred)
{
Node *succ = pred->succ;
this->pred = pred;
this->succ = succ;
pred->succ = this;
succ->pred = this;
}

class List
{
public:
List();
void AddHead(Node* n);

private:
Node* head;
Node* tail;
Node* tailpred;
};

List::List()
{
this->head = (Node *) &(this->tail);
this->tail = 0;
this->tailpred = (Node *) &(this->head);
}

inline
void
List::AddHead(Node *n)
{
n->InsertAfter((Node *) &(this->head));
}

void main()
{
List *log = new List;
Node *node = new Node;
log->AddHead(node);
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.