我正在尝试为我的C ++类创建一个链表,我正在查看我教授的一些代码:
void List::add(char c)
{
Node *newNode(new Node(c));
if (last == nullptr)
first = last = newNode;
else {
last->next = newNode;
last = newNode;
}
}
int List::find(char c)
{
Node *node(first);
int i(0);
while (node) {
if (node->c == c)
return i;
node = node->next;
i++;
}
return -1;
以下是头文件中的类声明:
class List
{
public:
List(void);
~List(void);
void add(char c);
int find(char c);
bool remove(int index);
int length(void);
friend std::ostream& operator<<(std::ostream& out, List& list);
private:
class Node
{
public:
Node(char c) : c(c), next(nullptr) { }
char c;
Node *next;
};
Node *first;
Node *last;
};
第一个问题:括号是什么意思,使用它们的正确方法是什么?
Node *newNode(new Node(c));
Node *node(first);
int i(0);
第二个问题:以下是什么意思?
Node(char c) : c(c), next(nullptr) { }
我过去使用struct定义了一个节点;语法是不同的,因为这是一个类?
答案 0 :(得分:0)
此陈述
Node *newNode(new Node(c));
Node *node(first);
int i(0);
相当于
Node *newNode = new Node(c);
Node *node = first;
int i = 0;
Node类的构造函数
Node(char c) : c(c), next(nullptr) { }
使用mem-initializer list : c(c), next(nullptr)
来初始化类的数据成员。
即数据成员c
由构造函数参数c
初始化,数据成员next
由指针文字nullptr
初始化