这里只是一个实现简单功能的链表,意在说明链表的工作原理。举例语言c++。
简单的工作原理:链表对象,头节点对象,中间节点对象,尾节点对象。链表就是用来存储数据的,
在进行数据存储的工作时候,用户看到的是链表这个对象,用户把要存储的对象放到链表中,之后的
工作都是由各个节点来完成的。
首先数据传到链表中,链表把数据交给头节点处理,头节点根据其指向的地址所处位置进行相应
处理,比如在链表为空的时候,头节点指向的是尾节点。这个时候头节点把工作交给尾节点来处理,
尾节点的处理方式就是重新开辟一块空间,把数据存在其中,并让这个空间指向尾节点。因为这条数
据是在尾节点的前面。如果链表不是空,头节点指向的可能是中间节点。那么接下来的工作就交由
中间节点来完成的。道理雷同。下面是代码简单说明。
首先需要定义一个链表的类,这个类中要定义一个指向头节点的指针,还有插入数据的方法。
// 链表对象
class LinkedList
{
public:
LinkedList();
~LinkedList() { delete myHead; }
void Insert(Data * theData); // 插入数据的方法
private:
HeadNode * myHead; // 指向头节点的指针
};
// 链表对象的方法实现
void LinkedList::Insert(Data *pData)
{
myHead->Insert(pData);
}
// 头节点对象
class HeadNode : public Node
{
public:
HeadNode();
~HeadNode() { delete myNext; }
virtual Node * Insert(Data * theData);
virtual void Show() { myNext->Show(); }
private:
Node * myNext;
};
// 头节点的两个方法实现
HeadNode::HeadNode()
{
myNext = new TailNode;
}
Node * HeadNode::Insert(Data *theData)
{
myNext = myNext->Insert(theData);
return this;
}