#pragma once namespace JTL // Jack's template library { typedef int Rank; #define ListNodePosi(T) ListNode<T>* template <typename T> struct ListNode { T data; ListNodePosi(T) pred; ListNodePosi(T) succ; ListNode() : data(0), pred(NULL), succ(NULL) {} ListNode(T e, ListNodePosi(T) p = NULL, ListNodePosi(T) s = NULL) : data(e), pred(p), succ(s) {} ListNodePosi(T) insert_as_pred(T const& e); ListNodePosi(T) insert_as_succ(T const& e); }; }; #include "list_node_implementaion.h"