在链表中插入前后节点



我试图根据数据成员的值在列表中插入节点。基本上,如果成员isVip求值为true,则该节点获得优先级,并且应该在任何常规节点之前插入(但在任何现有VIP节点之后)。常规节点只是被添加到列表的末尾。

我很确定我有一个好主意,如何使用两个指针来遍历列表,并为n> 2插入元素,其中n是当前列表成员的数量,但我在概念上卡住了,因为只有一个节点。

下面是我的工作版本的代码:

void SelfStorageList::rentLocker(Locker e) {
int count = 0;
    LockerNode *p = head;
if (isEmpty()) {
    head = new LockerNode(e);
    tail = head;
}
for(;p!=0;count++, p=p->next) {
    if(count == 1) {
        if (e.isVip) {
                        if(p->objLocker.isVip)  {
                           LockerNode*p = new LockerNode(e, p->next);
            }
                    }
           }

}

如你所见,我正在检查传入的对象是否为VIP,然后检查当前对象是否为VIP。这里,我遇到了一些麻烦。假设两者都是VIP,这一行是否:

LockerNode*p = new LockerNode(e, p->next);

将传入的储物柜对象放在正确的位置(即当前VIP对象之后)。如果是,将:

LockerNode*p = new LockerNode(e, p);

等于将它放在?节点的"下一个"成员的使用或缺失定义了放置位置,还是完全不同?

希望有人能澄清我的疑问,抱歉,如果这似乎是一个愚蠢的问题!谢谢!

下一个节点具有isVip集(current->next->isVip)时,简单地遍历列表。迭代后,最后访问的节点将是最后一个设置了isVip的节点,您应该在该节点之后插入新节点。


它可以在更少的行中实现,不需要显式的isEmpty检查,也不需要任何计数器。

相关内容

  • 没有找到相关文章

最新更新