链接列表创建节点
LinkedList creating nodes
我试图实现C++单链接。我创建了一个方法,该方法创建一个节点并添加一个值并指向另一个节点,但我必须记住索引。
- 如何在不记住索引的情况下改进代码并创建节点? (我想保持顺序=第一个创建的节点指向另一个节点等)
上课方法:
void LinkedList::addValue ( int val )
{
if ( ! index )
{
n = new Node();
head = n;
n->value = val;
n->next = NULL;
}
else
{
n->next = new Node( );
n = n->next;
n->value = val;
}
++index;
}
我猜,你已经有两个成员变量:head 是根节点,n 是最后一个节点。您应该在构造函数中使用 NULL(c++11 的 nullptr)初始化它们。然后,您可以在向列表中添加新值时检查n==NULL。
LinkedList::LinkedList():head(NULL),n(NULL)
{}
void LinkedList::addValue ( int val )
{
if (n==NULL)
{
n = new Node();
head = n;
n->value = val;
n->next = NULL;
}
else
{
n->next = new Node( );
n = n->next;
n->value = val;
}
}
但是,如果要在一个快速读取操作中查找列表大小而不遍历其所有节点,则索引变量可能很有用。
您可以创建另一个名为 Tail 的指针来指向最后一个元素。这样,您可以在没有索引的情况下向列表添加值。我称此方法为追加void append(int val){
void append(int val) {
Node* tmp = new Node(); // creating a temporary pointer to a new node
tmp -> value = val
last -> next = tmp; // connect the new node to the linked list
last = tmp; // set the last to the newly created node
listSize++; // increase the size of the list
}
您还可以通过为节点创建构造函数来改进代码:
Class Node{
public:
int value;
Node * next;
Node(Node * nextEle = NULL) {
next = nextEle;
}
Node(int val,Node * nextEle = NULL) {
value = val;
next = nextEle;
}
}
相关文章:
- 无法为 X.radio 创建中等可视化,因为找不到网络节点可视化 - Omnet++
- 创建了一个链表,但如何删除 c++ 中的"所有"节点
- 在解决链表问题时创建一个额外的节点是一个好习惯吗?
- 如何在节点插件中创建 getter?
- C++创建指向有向图中节点的指针数组
- 如果我们不创建一个新节点并使用指针插入数据并建立链接(在链表中)怎么办?
- 创建附加到每个节点的节点列表 (c++)
- 如何在c++中创建节点
- 为什么我的类节点覆盖自身而不是创建新的节点对象
- 创建的节点类型不同
- 在不创建新节点的情况下实现带有映射的trie
- 创建静态哨兵节点的正确方法是什么
- C++创建一个链表,每个节点有超过 2 个字段
- 插入功能保持重新创建根节点
- 我们不能在不使用指向对象的指针的情况下创建节点C++吗?
- 为数据缺少默认构造函数的链表创建节点
- 在声明节点创建链接列表时,为什么静态内存分配不起作用
- 如何用空节点创建完整的二进制树
- 使用可移动节点创建有向图(使用 QT / Boost)
- C++链表节点创建导致无限循环