您的位置:首页 > 理论基础 > 数据结构算法

数据结构之循环链表

2014-05-16 23:28 211 查看
循环链表是数据结构中链表的一种形式。相对于单向链表,将单向链表的尾结点的指针域指向该单向链表的头结点,就构成了循环链表。

可以这么理解,单向链表就是一张单程火车票,比如你要从北京坐火车去上海,路上经过济南、南京,此时北京、济南、南京、上海就构成了单向链表的四个结点,如下图所示。



但是,单向链表是有去无回的,也就是从北京去了上海,那你就永远别回来了。那如果想回北京怎么办?而且是想舒服地回去(坐飞机回去),此时就去买张上海到北京的机票,也就是将上海和北京直接连起来,起点是上海,终点是北京。这也就构成了本文所说的循环链表。如下图所示。



循环链表包括两种形式:一种为不带头结点的循环链表,即任何一个结点都可以当作头结点,如上图所示;另一种为带头结点的循环链表,如下图所示。一般来说,该头结点内容或者为空,或者可以记录链表长度等信息。



由于在数据结构之链表单向操作总结一文中已经详细总结了单向链表的各种操作,且循环链表也比较好理解,在此就不写过多的示例,只写一个在循环链表中查找结点的算法来抛砖引玉吧。

public Node searchItem(Object data) {
Node p = m_headNode.getNext();
while(p != m_headNode) {
if(p.getData() == data) {
return p;
}
p = p.getNext();
}
return null;
}


与单向链表比较,循环链表可以从任意结点出发遍历整个链表,这也是循环链表的优势所在。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: