这是混乱的部分。这意味着将 _head->prev 取消引用到 nullptr 但如果没有 prev 它会崩溃,所以我正在尝试处理该崩溃。当它到达
if( _head )
(!_head->prev)
它搞砸了,因为没有以前的。我不知道如何编写一个 if 语句来处理这个时刻,这样它就不会中断。如果没有 prev 我只想 --_size 删除 tmpnode 并返回结果。
template <class list>
list linked_list<list>::pop_front()
{
assert( !empty() );
node_ptr_t tmpNode(_head);
list result = _head->data;
if(_head->next)
_head = _head->next;
else
_head = _tail;
if ( _head )
if(!_head->prev)
{
--_size;
delete tmpNode;
return result;
}else{
_head->prev = nullptr;
}else {
_tail = nullptr;
}
//_head ? _head->prev=nullptr : _tail=nullptr;
--_size;
delete tmpNode;
return result;
}