概述
链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,有一系列结点(地址)组成,结点可动态的生成。
结点包括两个部分:
- 存储数据元素的数据域(内存空间),
- 存储指向下一个结点地址的指针域。
相对于线性表顺序结构,操作复杂。
代码实现
#ifndef LINKLIST_H_
#define LINKLIST_H_
#include "List.h"
#include "Object.h"
#include "Exception.h"
namespace MYLIB{
template<typename T>
class LinkList:public List<T>
{
protected:
class Node:public Object
{
// 单链表的节点
public:
T data;
Node* next;
};
mutable struct : public OBject
{
// 采用匿名的方式构造头节点
// 设计使得结构上和 node 完全相同,但是不调用 node 的构造函数
char reserved[sizeof(T)];
Node* next;
}m_head;
int m_length;
Node* m_current;
int m_step;
Node* position(i) const
{