单链表的根节点是否被视为列表的一部分?

时间:2015-12-13 02:17:26

标签: c++ oop pointers data-structures linked-list

我知道,C++中的单链表是这样的结构,即根节点不包含任何值,而是节点列表中的第一个元素。以根节点为首的链表中的节点(所有节点都包含数据,指向列表中下一个节点的指针)。

一个简单的列表框架(没有mutator或accessors)可能如下所示:

class List {
private:
    struct Node {
        int value;
        Node* next;
    };
    Node* root;
public:
    List() {
        root = new Node;
        root->next = nullptr;
        root->val = 0;
    }
}

我认为这一切都意味着root->next指向列表中的第一个元素(意味着根节点不是第一个元素)是正确的吗?

1 个答案:

答案 0 :(得分:1)

一个不被视为常规节点的头节点可以简化(1)一些列表操作。

当有一个时,它不被认为是常规节点集的一部分,如果列表被抽象化,那么头节点通常对客户端代码不可见。

同样可以有尾节点,但只需使用循环列表就可以了。

所有这一切,请考虑使用std::vector,您需要插入或删除数据,而不会使指向现有项目的指针无效。

通常情况下,只需使用vector<bool>deque<bool>可能除外,其中可能会考虑for(z = 1; z < 19; z++) { buttonArray[z] = new JButton(" "); grid.add(buttonArray[z]); buttonArray[z].setActionCommand("" + z); buttonArray[z].addActionListener(this); } buttonArray[4].setText(Character.toString('X')); if(buttonArray[4].equals('X') // problem? { buttonArray[4].setText(Character.toString('O'));; } )。

(1)例如删除满足某些标准的第一个节点。