头文件
#ifndef LIST_H
#define LIST_H
namespace wyp{
template<class T>
class Node{
public:
Node(const T& data, Node<T>* link) : data(data), link(link){
}
Node<T> * getLink(){
return link;
}
const T getData(){
return data;
}
void setData(const T &data){
this->data = data;
}
void setLink(Node<T> *link){
this->link = link;
}
private:
T data;
Node<T> *link;
};
template<class T>
void headInsert(Node<T>*& head, const T &data);
template<class T>
void insert(Node<T>* after, const T& data);
template<class T>
void deleteNode(Node<T> *before);
template<class T>
void deleteFirstNode(Node<T> *&head);
template<class T>
Node<T> * search(Node<T> *head, const T&data);
}
#endif
实现
#include <cstddef>
#include "list.h"
namespace wyp{
template<class T>
void headInsert(Node<T>*& head, const T &data){
head = new Node<T>(data, head);
}
template<class T>
void insert(Node<T>* after, const T& data){
after->setLink(new Node<T>(data, after->getLink()));
}
template<class T>
void deleteNode(Node<T> *before){
Node<T> *discard;
discard = before->getLink();
before->setLink(discard->getLink());
delete discard;
}
template<class T>
void deleteFirstNode(Node<T> *&head){
Node<T> * discard;
discard = head;
head = discard->getLink();
delete discard;
}
template<class T>
Node<T> * search(Node<T> *head, const T&data){
Node<T> *here = head;
if(here == NULL){
return NULL;
}else{
while(here->getData() != data && here->getLink() != NULL){
here = here->getLink();
}
if(here->getData == data){
return here;
}else{
return NULL;
}
}
}
}