这是我在尝试测试双向链表的remove_at()
功能时遇到的运行时错误。知道为什么会这样吗?我查看了我的算法并没有看到任何错误。或者,如果可能的话,请帮助我以更简单的程序执行此操作。
template <class T> void List<T>::remove_at(unsigned remIdx) {
if (remIdx > (size - 1)) {
throw("Out-of-bounds error.");
} else {
node* curNodePtr = firstNodePtr;
for (unsigned k = 0; k < remIdx; ++k)
curNodePtr = curNodePtr->nextNodePtr;
(curNodePtr->prevNodePtr)->nextNodePtr = curNodePtr->nextNodePtr;
(curNodePtr->nextNodePtr)->prevNodePtr = curNodePtr->prevNodePtr;
delete curNodePtr;
}
}
我班级定义的相关部分是
private:
struct node {
T val;
node* prevNodePtr;
node* nextNodePtr;
};
node* firstNodePtr;
node* lastNodePtr;
unsigned size;