Lists

template<class item_type,int max_size>

class list

{

list();

boolean is_empty();

boolean is_full();

void reset();

boolean end_of_list();

void advance();

item_type current_item();

void insert_before(item_type some_item);

void insert_after(item_type some_item);

void erase();

~list();

}

Design of List ADT (Contiguous design)

list()

size = 0;

cursor = 1;

is_empty()

return size == 0;

or alternatively

if (size == 0)

return true

else

return false

is_full()

return size == max_size;

reset()

cursor = 1; // Precondition list is not empty

end_of_list()

return cursor== size+1;

advance()

cursor++;

current_item()

return a[cursor-1]

insert_before(item_type some_item)

for(j = size; j >=cursor; j--)

a[j] = a[j-1];

a[cursor-1] = some_item;

size++;

insert_after(item_type some_item)

for(j = size; j >cursor; j--)

a[j] = a[j-1];

a[cursor] = some_item;

cursor++; size++

erase()

for(j=cursor; j<size; j++)

a[j-1]=a[j];

size--;

Implementation of LIST ADT

template<class item_type,int max_size>

class list

{

item_type a[max_size];

int size,cursor;

public:

list();

boolean is_empty();

boolean is_full();

void reset();

boolean end_of_list();

void advance();

item_type current_item();

void insert_before(item_type some_item);

void insert_after(item_type some_item);

void erase();

~list();

};

template<class item_type,int max_size>

list<item_type,max_size>::list()

{

size = 0;

cursor = 1;

}

template<class item_type,int max_size>

boolean list<item_type,max_size>::is_empty()

{

return size == 0;

}