线性表链式存储结构就是链表,刚开始定义该结构的时候,一直困惑于链表的成员变量是否只是一个节点头指针,觉得为什么不能将节点结构体的数据和next节点指针直接作为链表的成员变量呢?现在回过头来想想,是混淆了链表和节点的概念,节点就是个独立的数据结构,而链表使用节点头指针表示一系列节点组成的序列。若直接将data和next作为链表的成员变量,那么我定义了一个链表,它具有一个data和一个指向其他链表的指针,那么在链表中增加变量就是一系列链表,整个逻辑关系就非常混乱,不可取。所以节点和链表都是单独的,查了一些资料,节点和链表的实现可以采用4中方法:嵌套类、复合类、继承类、结构体定义节点。这四种方法的介绍可以通过静默虚空同学的博客。(http://www.cnblogs.com/jingmoxukong/p/3827011.html)本文采用第四种方法进行构造,具体源代码如下所示:
//linkedlist
#ifndef LINKEDLIST
#define LINKEDLIST
template<class Type>
struct LinkNode{
Type data;
LinkNode<Type>* next;
};
template<class Type>
class LinkedList{
private:
LinkNode<Type>* head;
public:
LinkedList();
~LinkedList();
bool Insert(int position,Type x);
bool Delete(int position);
int Find(Type x);
int GetSize();
void Print();
};
template<class Type>
LinkedList<Type>::Linke