单链表C++实现
1. 定义
一般用两个类,结点类linkNode和链表类list,协同表示单链表,主要有3种方式:
- 复合类
class List;
class LinkNode{
friend class List;
private:
int data;
LinkNode *link;
};
class List{
public:
//some operations
private:
LinkNode* first;
};
- 嵌套类
class List{
public:
//some operations
private:
class LinkNode{
public:
int data;
LinkNode *link;
};
LinkNode* first;
};
- 基类和派生类
class LinkNode{
protected:
int data;
LinkNode *link;
};
class List : public LinkNode{
private:
LinkNode* first;
public:
//some operations
};
2.单链表模板类
template <class T>
struct LinkNode{
T data;
LinkNode<T> *link;
//construct function
LinkNode(LinkNode<T> *ptr = NULL) {
link = ptr;}
LinkNode(const T& item, LinkNode<T> *ptr = NULL)
{
data = item;
link = ptr;
}
};
template<class T>
class List : public LinearList<T> {
List() {
first = new LinkNode<T>; }
List(const T& x) {
first = new LinkNode<T>(x); }
List(List<T>& L); //copy construct function
~List() {
makeEmpty();}
//operations
void makeEmpty();
int Length()const;
LinkNode<T> *getHead()const {
return first; }
LinkNode<T> *Search(T x); //search x
LinkNode<T> * Locate(