Kakav nakaradni kod. Stvarno nema potrebe za celom tom zapetljancijom. Bolje je nesto kao ovako:
Code:
#include <vector>
typedef std::vector< SLLNode<T>* > SSLNodeArray;
typedef std::vector< SLLNode<T>* >::iterator SSLNodeArrayIterator;
SSLNodeArray temp;
temp.resize(c);
.
.
.
while (tmp!=NULL){
temp[i++]=tmp;
tmp=tmp->next;
}
.
.
.
for ( SSLNodeArrayIterator iter = temp.begin(); iter != iter.end(); ++iter) {
delete *iter;
}
Ili jos bolje uz malo RAII da se olaksa stvar:
Code:
#include <vector>
typedef std::vector< SLLNode<T>* > SSLNodeArray;
typedef std::vector< SLLNode<T>* >::iterator SSLNodeArrayIterator;
struct SSLHolder{
explicit SSLHolder(SSLNodeArray* it) : m_item(NULL) {
if (it != NULL) {
m_item = it;
}
}
~SSLHolder() {
if (m_item != NULL) {
for ( SSLNodeArrayIterator iter = m_item->begin(); iter != m_item->end(); ++iter) {
delete *iter;
}
delete m_item;
m_item=NULL;
}
}
private:
SSLNodeArray* m_item;
};
SSLNodeArray* temp = new SSLNodeArray;
SSLHolder arrayGuard(temp);
.
.
.
while (tmp!=NULL){
temp->push_back(tmp);
tmp=tmp->next;
}