前言
链表其实也算好理解的一种数据结构,其和顺序表不一样的是数据元素按逻辑次序链接在一起。
在这先说一下顺序表的缺点:
-
插人和删除操作需移动大量元素。
-
不确定容量大小。
-
使储存空间变得碎片化。
这些缺点其实很好理解,插人和删除操作都是一步一步位移完成。数组大小需要我们去声明,事先确定他的大小。如果声明许多的数组,会造成存储空间的“碎片”。因为这些问题的根本在于顺序表是静态存储分配。
现在一起了解一下链表吧。
单链表
单链表(singly linked list)是用组任意的行储单元存放线性表的元素,这组存储单元可以连续也可以不连续,甚至可以零散分布在内存中的任意位置。为了能正确表乐元素之间的逻辑关系每个存储单元在存储数据元素同时,还必须在储其后继元素所在的地址信息。这个地址信息称为指针。
单链表的知识点:
-
数据元素的存储映象,称为结点(node),其中data为数据域,存放数据元素:nxt为指针城,存放该结点的后继结点的地址。如图2-1。
-
在使用单链表时关心的只是数据元素以及数据元素之间的逻辑关系,而不是每个数据元素在存储器中的实际位置。
其余的知识点有头结点,尾标志,头指针,指针变量这些,在单链表中有很大的作用。
-
接下来进入C++代码实现栈的功能·环节,如有不足,和我一起讨论吧
C++基本操作实现
结点结构
template <class D>
struct Node
{
D data;
Node<D>*next;
};
其中data为数据域,存放数据元素:nxt为指针域,是不是很简单。
功能概括
template <class D>
class LinkList
{
public:
LinkList();//建立只有头结点的空链
LinkList (D a[],int n);