以下是我在代码中遇到的两个类Node
List
。
我无法看到这两个类共同试图表示的数据结构。
class Node
{
private:
friend class List;
Node* next ;
Node* prev ;
List* listpointer;
void add ( Node* , List * ) ;
} ;
void Node :: add ( Node* predecessor, List *parent )
{
} // Node :: add()
Node* Node :: rem ( void )
{
}
}
class List
{
private:
friend class Node;
Node* head ;
Node* dummy ;
Node* tail ;
int count;
public:
List ( void ): dummy( NULL), count( 0 )
{
}
~List ( void ) ;
void addhead ( Node* node )
{
}
void addtail ( Node* node )
{
}
Node* gethead ( void ) const
{
}
Node* gettail ( void ) const
{
}
Node* remhead ( void )
{
}
Node* remtail ( void )
{
}
Node* getnode ( int i ) const ;
int getnodecount ( void ) const ;
void swap ( Node *node1, Node *node2 ) ;
Node* removehead ( void )
{
}
Node* removetail ( void )
{
}
CsTboolean is_member ( Node * node ) const
{
}
} ;
我的问题:
你能帮我看一下这个数据结构吗?这个图/ dlist / somethingelse?
答案 0 :(得分:2)
此结构看起来像双链表。
链接列表可以像节点链一样可视化,每个节点指向列表中的下一个节点。在这种情况下,它是双链表,因为每个节点也指向前一个节点。
CsGNode类就是单个节点可以做的事情。在这种情况下,它知道前一个,下一个并且还链接到另一个列表。我不确定自void add ( CsGNode* , CsGList * ) ;
定义缺失以来是什么。
CsGList类只是保存指向第一个和最后一个节点(头部和尾部)的指针,以便不丢失数据。它还用于添加节点并在需要时移动它们。 CsGList负责那里的大局,而每个单独的节点只负责自己。
您可以将其视为每个块作为节点,并且列表是尾部和头部,并使用这两个指针在列表中导航。