#include <stdio.h>
template<typename T>
struct Node
{
Node* _next;
Node* _pre;
T data;
};
template<typename T>
struct SLinkedList
{
SLinkedList() : _header(nullptr)
{
}
Node<T>* getHeader() const
{
return _header;
}
void insert(T t)
{
Node<T> *h = new Node<T>();
h->_next = _header;
h->_pre = nullptr;
h->data = t;
if (_header)
{
_header->_pre = h;
}
_header = h;
}
~SLinkedList()
{
Node<T> *h = _header;
while (h)
{
Node<T>* next = h->_next;
delete h;
h = next;
}
_header = nullptr;
}
private:
Node<T>* _header;
};
int main(int argc, char* argv[])
{
SLinkedList<int> iLinkList;
iLinkList.insert(1);
iLinkList.insert(2);
iLinkList.insert(3);
printf("the link list of data: \n");
auto* header = iLinkList.getHeader();
while(header)
{
printf("%d\n", header->data);
header = header->_next;
}
return 0;
}
从头部插入数据。
执行结果: