如何可视化用C ++编写的数据结构?

时间:2014-05-03 12:17:57

标签: c++ data-structures

以下是我在代码中遇到的两个类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?

1 个答案:

答案 0 :(得分:2)

此结构看起来像双链表。

链接列表可以像节点链一样可视化,每个节点指向列表中的下一个节点。在这种情况下,它是双链表,因为每个节点也指向前一个节点。

CsGNode类就是单个节点可以做的事情。在这种情况下,它知道前一个,下一个并且还链接到另一个列表。我不确定自void add ( CsGNode* , CsGList * ) ;定义缺失以来是什么。

CsGList类只是保存指向第一个和最后一个节点(头部和尾部)的指针,以便不丢失数据。它还用于添加节点并在需要时移动它们。 CsGList负责那里的大局,而每个单独的节点只负责自己。

您可以将其视为每个块作为节点,并且列表是尾部和头部,并使用这两个指针在列表中导航。

badly drawn doubly linked list