Example #1
0
/**
 * Access queue front data.
 */
void* queue_front(const queue_t* cpque_queue)
{
    assert(cpque_queue != NULL);

#ifdef CSTL_QUEUE_LIST_SEQUENCE
    return list_front(&cpque_queue->_t_sequence);
#else
    return deque_front(&cpque_queue->_t_sequence);
#endif
}
Example #2
0
static int deque_basic() {
  Deque d[1];
  deque_init(d, sizeof(int), 10);

  *(int*)deque_pushback(d) = 2;
  *(int*)deque_pushback(d) = 3;
  *(int*)deque_pushfront(d) = 1;
  *(int*)deque_pushback(d) = 4;
  *(int*)deque_pushfront(d) = 0;

  for (int i = 0; i <= 4; i++) {
    int val = *(int*)deque_front(d);
    deque_popfront(d);
    assertEqual(i, val);
    assertEqual(4-i, deque_size(d));
  }

  deque_close(d);
  return 0;
}
Example #3
0
int main()
{
    const char *output[] = {"EsaY", "YasE", "aYsE", "asYE"};
    const char *input = "EasY";
    const char *pinput; /* point to input */
    const char *poutput; /* point to output */
    size_t i;

    for (i = 0; i < SIZE(output); i++) {
        pinput = input;
        poutput = output[i];
        printf("for pattern %s:\n", poutput);

        for (; *poutput != '\0';) {
            if (!deque_empty() && deque_front() == *poutput) {
                printf("+\t%c\n", deque_pop_front());
                poutput++;
            } else if (!deque_empty() && deque_back() == *poutput) {
                printf("*\t%c\n", deque_pop_back());
                poutput++;
            } else { /* the deque is empty or not the first or last */
                if (islower(*pinput)) {
                    deque_push_back(*pinput++);
                } else if (isupper(*pinput)) {
                    deque_push_front(*pinput++);
                } else if (*pinput == '\0') {
                    printf("unable to generate such pattern\n");
                    break;
                }
            }
        }

        putchar('\n');
    }

    return 0;
}