目录
解释:List,Node,node->next,下一个节点(重点在node->next与下一个节点的区别)
链表的定义
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 (百度百科:https://baike.baidu.com/item/%E9%93%BE%E8%A1%A8/9794473?fr=aladdin)
定义模板节点类
template <class T>
class Node{
friend class List<T>;//为了使链表类可以访问节点的私有成员变量所以将其设为友元类
private:
T data;//数据域
Node* next;//指针域
Node(T);//构造函数
};
定义链表类
//链表可以看作是一个头节点指向的空间,就像数组的数组名一样
template <class T>
class List{
private:
Node<T>* first;//头节点
public:
List(){
first = 0;//头节点为空
}
void Insert(T);//插入数据
void Show();//显示数据
void Delete(T);//删除数据
void Invert();//反转链表
void Concatenate(List<T> list);//将两个链表连接
};
解释:List,Node,node->next,下一个节点(重点在node->next与下一个节点的区别)
List:即链表,它由一个头节点以及一串不连续的空间组成,这些空间就是一个一个节点;
图示:
Node:即节点,它由数据域和指针域组成,数据域用来存储数据,指针域用来存储下一节点的地址;
图示:
node->next:即指针域所存储的地址,他对应着下一个节点的地址,所以我们也称之为指向下一个节点,是一个虚化的地址;
图示:
下一个节点:即下一个节点所在的空间,是一个实体的存储空间;
图示: