c++单项链表类模板
时间: 2023-07-04 17:13:03 浏览: 121
好的,下面是一个简单的C++单向链表类模板的实现:
```c++
template <typename T>
class LinkedListNode
{
public:
T data;
LinkedListNode<T> *next;
LinkedListNode() : next(nullptr) {}
LinkedListNode(T d) : data(d), next(nullptr) {}
};
template <typename T>
class LinkedList
{
private:
LinkedListNode<T> *head;
LinkedListNode<T> *tail;
int size;
public:
LinkedList() : head(nullptr), tail(nullptr), size(0) {}
~LinkedList()
{
LinkedListNode<T> *temp = head;
while (temp != nullptr)
{
LinkedListNode<T> *next = temp->next;
delete temp;
temp = next;
}
}
void add(T data)
{
LinkedListNode<T> *node = new LinkedListNode<T>(data);
if (head == nullptr)
{
head = node;
tail = node;
}
else
{
tail->next = node;
tail = node;
}
size++;
}
void remove(T data)
{
LinkedListNode<T> *temp = head;
LinkedListNode<T> *prev = nullptr;
while (temp != nullptr)
{
if (temp->data == data)
{
if (prev == nullptr)
{
head = temp->next;
}
else
{
prev->next = temp->next;
}
if (temp == tail)
{
tail = prev;
}
delete temp;
size--;
break;
}
prev = temp;
temp = temp->next;
}
}
int getSize()
{
return size;
}
void print()
{
LinkedListNode<T> *temp = head;
while (temp != nullptr)
{
std::cout << temp->data << " ";
temp = temp->next;
}
std::cout << std::endl;
}
};
```
这个单向链表类模板包含两个类,`LinkedListNode`表示链表中的一个节点,`LinkedList`表示整个单向链表。在`LinkedList`中,我们可以实现一些基本的链表操作,如添加、删除、获取链表大小和打印链表。
阅读全文