65 lines
1.4 KiB
C++
65 lines
1.4 KiB
C++
#include "LinkedBlockList.h"
|
|
|
|
/*********************************************************************/
|
|
|
|
void LinkedBlockList::addFront(ListType item) {
|
|
|
|
if ( m_head_block_size == GCLL_BLOCK_SIZE )
|
|
{
|
|
LLBlock *tmp = (LLBlock *) new LLBlock;
|
|
tmp -> m_next = m_head;
|
|
m_head = tmp;
|
|
m_head_block_size = 0;
|
|
}
|
|
|
|
m_head ->m_item[m_head_block_size] = item;
|
|
m_head_block_size++;
|
|
}
|
|
|
|
/*********************************************************************/
|
|
|
|
ListType LinkedBlockList::next()
|
|
{
|
|
ListType toReturn = m_cursor -> m_item[m_cursor_ind];
|
|
|
|
m_cursor_ind++;
|
|
|
|
if ( m_cursor == m_head && m_cursor_ind >= m_head_block_size )
|
|
{
|
|
m_cursor = m_cursor ->m_next;
|
|
m_cursor_ind = 0;
|
|
}
|
|
else if ( m_cursor_ind == GCLL_BLOCK_SIZE )
|
|
{
|
|
m_cursor = m_cursor ->m_next;
|
|
m_cursor_ind = 0;
|
|
}
|
|
return(toReturn);
|
|
}
|
|
|
|
/*********************************************************************/
|
|
|
|
bool LinkedBlockList::hasNext()
|
|
{
|
|
if ( m_cursor != 0 ) return (true);
|
|
else return(false);
|
|
}
|
|
|
|
|
|
/*********************************************************************/
|
|
|
|
LinkedBlockList::~LinkedBlockList()
|
|
{
|
|
LLBlock *tmp;
|
|
|
|
while ( m_head != 0 )
|
|
{
|
|
tmp = m_head;
|
|
m_head = m_head->m_next;
|
|
delete tmp;
|
|
}
|
|
};
|
|
|
|
/*********************************************************************/
|
|
|