STL list的使用问题
大家好,用stl的list,想吧最好一个节点的link指针指向第一个节点,来使这个list循环起来,怎么写代码??
比如:
[code=C/C++][/code]
list<int> mylist;
mylist.push_back(1);
mylist.push_back(2);
//让存有值2的节点的下个指针指向第一个节点
这个问题我查了好久,拜托各位了。
[解决办法]
应该没有人去修改list中的链接指针,一方面这个是和stl实现有关,且不向程序员提供;另外一方明,我也觉得这是一个危险的意图。list在STL中的定义就是一个单向双链表!
[解决办法]
在std::list上包一层 大概写成下面了
#include "iostream"
#include "list"
template <typename T>
class myList
{
public:
typedef typename std::list<T>::iterator iteratorType ;
public:
myList(){} ;
~myList(){} ;
void push_back(T);
void insert(T,iteratorType) ;
void erase(iteratorType) ;
void nextIterator(iteratorType&) ;
size_t size() ;
iteratorType begin() ;
iteratorType end() ;
private:
std::list<T> listData ;
};
template <typename T>
void myList<T>::push_back(T value)
{
listData.push_back(value);
}
template <typename T>
void myList<T>::insert(T value,iteratorType iter)
{
listData.insert(iter,value) ;
}
template <typename T>
void myList<T>::erase(iteratorType iter)
{
listData.erase(iter);
}
template <typename T>
void myList<T>::nextIterator(iteratorType& iter)
{
++ iter ;
if( iter == listData.end() )
iter = listData.begin() ;
}
template <typename T>
size_t myList<T>::size()
{
return listData.size() ;
}
template <typename T>
typename myList<T>::iteratorType myList<T>::begin()
{
return listData.begin() ;
}
template <typename T>
typename myList<T>::iteratorType myList<T>::end()
{
return listData.end()-1;
}