节点的结构如下:
struct Node {
int value;
Node *next;
};
// construct a new node
Node * cons( int x, Node* p) {
return new Node{x, p};
}
现在,如果我输入我的主体:
Node *p;
p = cons(3,nullptr);
p = cons(2,p);
p = cons(1,p);
p = cons(4,p);
开始使用我的第一个节点而不是nullptr是否有更好的价值?根据我的理解,这是4个节点的顺序。那是对的吗?节点值3是列表中的第一个。所以这个函数会按顺序搜索我的链表,就像查看节点值3,2,1,4,然后是空节点一样。
//search linklist in order for value x
bool searchInOrder(int x, Node *p){
while(p->next != nullptr){
if(x == p->value)
return true;
p = p->next;
}
return false;
}
答案 0 :(得分:4)
问题:
开始使用我的第一个节点而不是
nullptr
是否有更好的价值?
答案:
这是创建链表的第一个节点的最佳方法。
问题:
据我所知,这是4个节点。那是对的吗?节点值3是列表中的第一个。所以这个函数会按顺序搜索我的链表,就像查看节点值3,2,1,4,然后是空节点一样。
答案:
是的,有4个节点。但是,值为3的节点不是列表中的第一个节点。
之后
p = cons(3,nullptr);
列表是:
+---+ +-----+
+ p + ---> | 3 | ---> NULL
+---+ +-----+
之后
p = cons(2,p);
列表是:
+---+ +-----+ +-----+
| p | ---> | 2 | ---> | 3 | ---> NULL
+---+ +-----+ +-----+
在
p = cons(4,p);
列表是:
+---+ +-----+ +-----+ +-----+ +-----+
| p | ---> | 4 | ---> | 1 |---> | 2 | ---> | 3 | ---> NULL
+---+ +-----+ +-----+ +-----+ +-----+