c++ 双向链表迭代器 代码
来源:互联网 发布:二手家具市场淘宝 编辑:程序博客网 时间:2024/05/22 10:27
#ifndef __LISTITERATOR_H__
#define __LISTITERATOR_H__
namespace xxx
{
template <typename T>
struct ListNode_t;
/** @addtogroup 基础件
*
* @{
*/
/** @addtogroup 容器
*
* @{
*/
/*!
* @brief 列表迭代器
*/
template <typename T>
struct ListIterator_t
{
ListNode_t <T> * m_pNode;
/*!
* @brief 构造函数
*/
ListIterator_t()
{
m_pNode = 0;
}
/*!
* @brief 构造函数
*/
ListIterator_t(const ListIterator_t <T> &it)
{
m_pNode = it.m_pNode;
}
/*!
* @brief 构造函数
*/
ListIterator_t(ListNode_t <T> *pNode)
{
m_pNode = pNode;
}
/*!
* @brief 获得迭代器的元素引用
*/
T& operator *()
{
return m_pNode->m_value;
}
/*!
* @brief 获得迭代器的元素引用
*/
const T& operator *() const
{
return m_pNode->m_value;
}
/*!
* @brief 获得迭代器的元素指针
*/
T* operator ->()
{
return &m_pNode->m_value;
}
/*!
* @brief ++后置操作符
*/
ListIterator_t& operator ++()
{
m_pNode = m_pNode->m_pNext;
return *this;
}
/*!
* @brief ++前置操作符
*/
ListIterator_t operator ++(int)
{
ListIterator_t _it = *this;
m_pNode = m_pNode->m_pNext;
return _it;
}
/*!
* @brief --后置操作符
*/
ListIterator_t& operator --()
{
m_pNode = m_pNode->m_pPrevious;
return *this;
}
/*!
* @brief --前置操作符
*/
ListIterator_t operator --(int)
{
ListIterator_t _it = *this;
m_pNode = m_pNode->m_pPrevious;
return _it;
}
/*!
* @brief 判断是否为同一个迭代器
*/
inline bool operator ==(const ListIterator_t &it) const
{
return m_pNode == it.m_pNode;
}
/*!
* @brief 判断是否不为同一个迭代器
*/
inline bool operator !=(const ListIterator_t &it) const
{
return m_pNode != it.m_pNode;
}
/*!
* @brief 设置为另一个迭代器
*/
ListIterator_t & operator =(const ListIterator_t &it)
{
m_pNode = it.m_pNode;
return *this;
}
};
/*!
* @brief 列表反向迭代器
*/
template <typename T>
struct ListReverseIterator_t
{
ListNode_t <T> * m_pNode;
/*!
* @brief 构造函数
*/
ListReverseIterator_t()
{
m_pNode = 0;
}
/*!
* @brief 构造函数
*/
ListReverseIterator_t(const ListReverseIterator_t <T> &it)
{
m_pNode = it.m_pNode;
}
/*!
* @brief 构造函数
*/
ListReverseIterator_t(ListNode_t <T> *pNode)
{
m_pNode = pNode;
}
/*!
* @brief 获得迭代器的元素引用
*/
T& operator *()
{
return m_pNode->m_value;
}
/*!
* @brief 获得迭代器的元素引用
*/
const T& operator *() const
{
return m_pNode->m_value;
}
/*!
* @brief 获得迭代器的元素指针
*/
T *operator ->()
{
return &m_pNode->m_value;
}
/*!
* @brief ++后置操作符
*/
ListReverseIterator_t& operator ++()
{
m_pNode = m_pNode->m_pPrevious;
return *this;
}
/*!
* @brief ++前置操作符
*/
ListReverseIterator_t operator ++(int)
{
ListReverseIterator_t _it = *this;
m_pNode = m_pNode->m_pPrevious;
return _it;
}
/*!
* @brief --后置操作符
*/
ListReverseIterator_t& operator --()
{
m_pNode = m_pNode->m_pNext;
return *this;
}
/*!
* @brief --前置操作符
*/
ListReverseIterator_t operator --(int)
{
ListReverseIterator_t _it = *this;
m_pNode = m_pNode->m_pNext;
return _it;
}
/*!
* @brief 判断是否为同一个迭代器
*/
inline bool operator ==(const ListReverseIterator_t &it) const
{
return m_pNode == it.m_pNode;
}
/*!
* @brief 判断是否不为同一个迭代器
*/
inline bool operator !=(const ListReverseIterator_t &it) const
{
return m_pNode != it.m_pNode;
}
/*!
* @brief 设置为另一个迭代器
*/
ListReverseIterator_t& operator =(const ListReverseIterator_t &it)
{
m_pNode = it.m_pNode;
return *this;
}
};
/** @} */ // end of 容器
/** @} */ // end of 基础件
}
#endif
- c++ 双向链表迭代器 代码
- 双向链表代码实现-C语言
- C-[双向循环带头链表]-代码
- c实现双向链表代码
- 简单易懂的C语言实现双向链表代码
- 双向链表 代码
- 双向绑定伪代码
- 双向链表c
- C双向链表
- 【C++】双向链表
- 【C++】双向链表
- C 双向链表
- 编程算法 - 二叉搜索树 与 双向链表 代码(C++)
- 双向循环链表实现26个英文字母的左右移位完整C代码
- c++ 双向链表代码
- 数据结构代码-双向链表
- 双向链表代码实例
- 【复习代码】双向链表
- 网上收集的笑话二
- squid后端显示源IP
- Java的web开发常见问题之:ClassCastException org.apache.struts.taglib.html.MessagesTei
- Struts常见错误及原因分析
- 10个红灯来告诉你--远离这个项目
- c++ 双向链表迭代器 代码
- U盘用USB-zip方式启动
- Distributed Transaction Processing:mysql
- log4j 按日期
- 阻塞和非阻塞通信
- Windows Server 2003 DNS服务安装篇(图)
- shared pool_使用large pool
- SecureRDP为你的3389加道锁
- Hibernate高级实体关联映射之多值的实体关联(一对多关联,利用联结表,idbag例)