我有双重链接列表的代码,并且有几行代码中的想法不明确。我请求专家对以下评论的评论进行评论。自从我上次使用C++以来,就已经很长时间了。只有两条线我表示对我来说是不可理解的。双链表列表模板中的几件事情
template <typename T>
class double_linked
{
struct node
{
T data;
node* prev;
node* next;
node(T t, node* p, node* n) : data(t), prev(p), next(n) {}
};
node* head;
node* tail;
public:
double_linked() : head(NULL), tail (NULL) {}
template<int N>
double_linked(T (&arr) [N]) : head(NULL), tail (NULL)
{
for(int i(0); i != N; ++i)
push_back(arr[i]);
}
bool empty() const { return (!head || !tail); } // this doing?
operator bool() const { return !empty(); } // this doing? i know operators need in C++ but dont know the use of it here
void push_back(T);
void push_front(T);
T pop_back();
T pop_front();
~double_linked()
{
while(head)
{
node* temp(head);
head=head->next;
delete temp;
}
}
};
我知道它告诉列表是否为空,但我再次知道其实现数组 – 2012-02-26 21:40:41