Beispiel #1
0
/**
 * Access queue last data.
 */
void* queue_back(const queue_t* cpque_queue)
{
    assert(cpque_queue != NULL);

#ifdef CSTL_QUEUE_LIST_SEQUENCE
    return list_back(&cpque_queue->_t_sequence);
#else
    return deque_back(&cpque_queue->_t_sequence);
#endif
}
Beispiel #2
0
/**
 * Access stack top data.
 */
void* stack_top(const cstl_stack_t* cpsk_stack)
{
    assert(cpsk_stack != NULL);

#if defined (CSTL_STACK_VECTOR_SEQUENCE)
    return vector_back(&cpsk_stack->_t_sequence);
#elif defined (CSTL_STACK_LIST_SEQUENCE)
    return list_back(&cpsk_stack->_t_sequence);
#else
    return deque_back(&cpsk_stack->_t_sequence);
#endif
}
Beispiel #3
0
static int deque_fuzz() {
  Deque d[1];
  for (size_t cap = 1; cap <= 10; cap++) {
    deque_init(d, sizeof(int), cap);

    for (int i = 0; i < 5; i++) {
      *(int*)deque_pushback(d) = 4 - i;
    }
    for (int i = 0; i < 5; i++) {
      *(int*)deque_pushfront(d) = 5 + i;
    }

    for (int i = 0; i < 10; i++) {
      int val = *(int*)deque_back(d);
      deque_popback(d);
      assertEqual(i, val);
    }

    assertEqual(0, deque_size(d));
    deque_close(d);
  }
  return 0;
}
Beispiel #4
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;
}