C++ 在链表中插入前/后节点

C++ 在链表中插入前/后节点,c++,linked-list,C++,Linked List,我试图根据数据成员的值在列表中插入节点。基本上,如果成员isVip的计算结果为true,则该节点将获得优先权,并应插入任何常规节点之前(但任何现有VIP节点之后)。常规节点只需添加到列表的末尾 我很确定我有一个很好的主意,如何使用两个指针来逐步遍历列表并插入n>2的元素,其中n是当前列表成员的数量,但是我在概念上有点不适应只有一个节点的情况 下面是我的工作版本代码: void SelfStorageList::rentLocker(Locker e) { int count = 0;

我试图根据数据成员的值在列表中插入节点。基本上,如果成员
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);
将传入的locker对象放置在正确的位置(即当前VIP对象之后)。若然,政府可否:

LockerNode*p = new LockerNode(e, p);
同等地把它放在前面?使用或不使用节点的“下一个”成员是定义放置位置的原因,还是完全不同


希望有人能消除我的疑虑,如果这是一个愚蠢的问题,请道歉!谢谢

在下一个节点设置了
isVip
时,只需在列表上迭代(
current->next->isVip
)。迭代之后,最后访问的节点将是最后一个设置了
isVip
的节点,您应该在该节点之后插入新节点



它可以在更少的行中实现,不需要显式的
isEmpty
检查,也不需要任何计数器。如果您使用标准容器,甚至比这个还要少。

您应该在某个地方修改
p->next
。构造函数
LockerNode(e,p)
的外观如何?是否确实要按值传递
Locker
参数?这意味着它将是一个副本。您应该考虑通过引用(或作为指针)传递它。不,值应该可以。我可以复印,但是谢谢你的建议。