我知道,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
指向列表中的第一个元素(意味着根节点不是第一个元素)是正确的吗?
答案 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)例如删除满足某些标准的第一个节点。