我正在尝试为学校项目的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;
};