单向链表模板类实现

#pragma once
#ifndef INT_LINKED_LIST
#define INT_LINKED_LIST片
template<class T>
class SLLNode //结点类模板
{
   
public:
 SLLNode() {
   
  next = 0;
 }
 SLLNode(T e1,SLLNode *ptr = 0){
   
  info = e1;
  next = ptr;
 }
 T info;
 SLLNode *next;
};
template<class T>
class SLList {
    //链表类模板
public:
 SLList() {
   
  head = tail = 0; //默认构造函数,形成空链表
 }
 ~SLList();
 int isEmpty() {
   
  return head == 0;
 }
 //向链表中添加新的结点(头部与尾部)
 void addToHead(T);
 void addToTail(T);
 //删除链表中的结点(头部,尾部以及任意)  note:这里均没有考虑链表为空情况,大家可以通过设置
 //assert或抛出异常解决
 T deleteFromHead();
 T deleteFromTail();
 void deletaNode(T)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是一个简单的单向链表模板的设计: ```c++ template<typename T> class LinkedListNode { public: T data; // 存储节点数据 LinkedListNode<T>* next; // 存储指向下一个节点的指针 LinkedListNode(T data) { this->data = data; this->next = nullptr; } }; template<typename T> class LinkedList { private: LinkedListNode<T>* head; // 存储指向链表头节点的指针 public: LinkedList() { this->head = nullptr; } ~LinkedList() { LinkedListNode<T>* current = this->head; while (current != nullptr) { LinkedListNode<T>* next = current->next; delete current; current = next; } } void add(T data) { LinkedListNode<T>* node = new LinkedListNode<T>(data); if (this->head == nullptr) { this->head = node; } else { LinkedListNode<T>* current = this->head; while (current->next != nullptr) { current = current->next; } current->next = node; } } void remove(T data) { LinkedListNode<T>* current = this->head; LinkedListNode<T>* previous = nullptr; while (current != nullptr) { if (current->data == data) { if (previous == nullptr) { this->head = current->next; } else { previous->next = current->next; } delete current; return; } previous = current; current = current->next; } } void print() { LinkedListNode<T>* current = this->head; while (current != nullptr) { std::cout << current->data << " "; current = current->next; } std::cout << std::endl; } }; ``` 该链表类具有添加节点、删除节点和打印链表等基本功能。其中,节点类`LinkedListNode`包含了节点数据和指向下一个节点的指针;链表类`LinkedList`包含了指向链表头节点的指针,以及添加、删除和打印链表的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值