“基础的轮子还是要造的,可以加深对它的理解”
一、总体结构及头文件
文件名称:LinkedList
二、LinkedList.h
#pragma once
template<class T>
class ListNode {
public:
T val;
ListNode<T>* nxt;
ListNode<T>* pre;
ListNode();
ListNode(T key);
};
/**********************************************************************/
template<class T>
class LinkedList {
public:
LinkedList();
LinkedList(int n);
LinkedList(int n, T key);
~LinkedList();
ListNode<T>* begin();
ListNode<T>* end();
void push_front(T key);
void push_back(T key);
void pop_front();
void pop_back();
bool empty();
void clear();
ListNode<T>* find(T key);
void insert(ListNode<T>* node, T key);
void erase(ListNode<T>* node, T key);
void print();
int size();
private:
ListNode<T> *head;
ListNode<T> *tail;
int lens;
};
三、LinkedList.cpp (具体实现)
#pragma once
#include"LinkedList.h"
#include<iostream>
template<class T>
ListNode<T>::ListNode() {
this->nxt = nullptr;
this->pre = nullptr;
this->val = 0;
}
template<class T>
ListNode<T>::ListNode(T key) {
this->nxt = nullptr;
this->pre = nullptr;
this->val = key;
}
/********