dlink.h
来自「采用c++实现的文本编辑器 采用了数据结构中的双链表实现」· C头文件 代码 · 共 34 行
H
34 行
// Doubly-linked list link node with freelist support
template <class Elem> class DLink {
private:
static DLink<Elem>* freelist; // Head of the freelist
public:
Elem element; // Value for this node
DLink *next; // Pointer to next node in list
DLink *prev; // Pointer to previous node
DLink(const Elem& e, DLink* prevp =NULL, DLink* nextp =NULL)
{ element = e; prev = prevp; next = nextp; }
DLink(DLink* prevp =NULL, DLink* nextp =NULL)
{ prev = prevp; next = nextp; }
// Overload new and delete operators for freelist
void* operator new(size_t);
void operator delete(void*);
};
template <class Elem>
DLink<Elem>* DLink<Elem>::freelist = NULL;
template <class Elem> // Overload for new operator
void* DLink<Elem>::operator new(size_t) {
if (freelist == NULL) return ::new DLink; // Create space
DLink<Elem>* temp = freelist; // Can take from freelist
freelist = freelist->next;
return temp; // Return the link
}
template <class Elem> // Overload for delete operator
void DLink<Elem>::operator delete(void* ptr) {
((DLink<Elem>*)ptr)->next = freelist; // Put on freelist
freelist = (DLink<Elem>*)ptr;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?