
다양한 data 유형을 저장하기 위해서 template로 정의된 Node class를 생성한다.
template <class Item>
class node {
public:
node(const Item& init_data = Item(),
node* init_pre_link = NULL, node* init_after_link = NULL);
void set_data(const Item& new_data) { data_field = new_data; }
void set_pre_link(node* new_pre_link) { pre_link_field = new_pre_link; }
void set_after_link(node* new_after_link) { after_link_field = new_after_link; }
Item data() const { return data_field; }
node* pre_link() { return pre_link_field; }
node* after_link() { return after_link_field; }
const node* pre_link() const { return pre_link_field; }
const node* after_link() const { return after_link_field; }
private:
Item data_field;
node* pre_link_field;
node* after_link_field;
};
Node의 데이터, 이전 노드 포인터, 다음 노드 포인터를 초기화하여 생성한다.
(매개변수들은 각각 초기화를 할 수 있으며, 초기화하지 않는 경우에는 NULL 포인터로 초기화)
template <class Item>
node<Item>::node(const Item& init_data, node* init_pre_link, node* init_after_link)
{
data_field = init_data;
pre_link_field = init_pre_link;
after_link_field = init_after_link;
}
template <class Item>
node<Item>* head_ptr;
template <class Item>
node<Item>* tail_ptr;