如何使用“->”运算符更改单链表中的指针地址

时间:2019-07-20 04:50:46

标签: c++

我正在尝试为学校项目的stl库的动态结构(特别是列表)中使用的擦除函数编写自己的代码

我想做的是做一个循环,直到找到要删除的节点之前的那个节点。

while (loop->next!= NULL){
        if (loop->next==pValue){
        break;
    }
    else {
            loop->next;
    }
}   
prev=loop;
delete loop;

然后,我要更新其指针,而不是使其指向要删除的节点,而是希望它指向要删除的节点之后的节点。 那我可以这样做吗?

*(prev->next)=*(pValue->next);

如果我做不到,该怎么办?

这是我的功能擦除

template <class T>
void list<T>::erase(pos pValue){
    list<T>::pos prev;
    list<T>::pos temp=pValue->next;
    list<T>::pos loop=list<T>::first();
    while (loop->next!= NULL){
        if (loop->next==pValue){
            break;
        }
        else {
            loop->next;
        }
    }   
    prev=loop;
    delete loop;

    *(prev->next)=*(pValue->next);

    delete list<T>::get(pValue);
}

这是我的课程列表的一部分

 template <class T>
 class list {
    node<T> *pFirst;
    int n;
    public:
        typedef node<T> *pos;
        void erase(pos pValue);
};

节点的结构:

 template <class T>
 class node {
     public:
        T info;
        node<T> *next;
 };

0 个答案:

没有答案