4.2.4 Add item

Adding an item to a queue needs to change the size. The computation of the index of the element to receive the new item involve modulo math. And, for a unlimited capacity queue, we may need to reorganize items:

void Queue_additem(struct Queue *pQueue, char v)
{
  unsigned tail;
  if (((struct _Queue *)pQueue)->size == ArrayADT_getcapacity(((struct _Queue *)pQueue)->array))
  {
    // need to increase the capacity (use resize) and reorganize
    // this makes a good homework assignment!
  }
  tail = ((struct _Queue *)pQueue)->head + ((struct _Queue *)pQueue)->size;
  tail %= ArrayADT_getcapacity(((struct _Queue *)pQueue)->array);
  ArrayADT_setelement(((struct _Queue *)pQueue)->array, tail, v);
  ((struct _Queue *)pQueue)->size++;
}



Copyright © 2006-10-23 by Tak Auyeung