线性表—单向循环链表

开始没看单向循环链表,感觉应该很简单,但实际上有几个概念不是很清楚:

 

头结点,头指针,尾指针,尾节点???

【个人理解】:头结点就是一个链表中实际存储数据的那个节点的前一个节点,这个节点不存储数据,只有一个指针指向第一个实际存储数据的节点(这个有效节点专业术语叫:首元素),这个节点就是头节点,指向头结点的指针就是头指针,至于尾指针,就是单纯的一个指针了,他没有一个节点作依托,孤零零的一个指针。尾指针指向最后一个存储数据的节点(尾指针内部存储的就是这个节点的地址),至于尾节点,还没有见到过。

 上面的概念配图解释一下:

 

有尾指针的单向循环链表的情况:

 

 

有头结点无尾指针的情况:

 

总结:

      单循环链表常采用使用尾指针的方式实现,原因是在实际使用中,我们常需要访问首元素和尾元素,上面的图片里已经给出具体访问的方式,可以看出有尾指针的单向循环链表可以再O(1)的时间内完成访问,而没有尾指针只有头结点的单向循环链表访问 首元素是常数时间,但访问尾元素却需要O(n)的时间,这在表很大的情况下是很浪费时间的,所以常采用有尾指针的方式来实现。

 

posted @ 2015-05-03 14:47  韩冰云  阅读(503)  评论(0编辑  收藏  举报