6栈和队列

#define PUSH(n)                 do {stack[p++] = n;} while(0)
#define POP(n)                  do {n = stack[--p];} while(0)
#define STACK_TOP               stack[p-1]
#define STACK_ISNOT_EMPTY       (p != 0)             

char* removeDuplicates(char* s) {

    char *stack = (char*)malloc(sizeof(char)*strlen(s)+1);
    int p = 0;
    int i = 0;
    char c;

    while(s[i] != '\0')
    {
        if (STACK_ISNOT_EMPTY && STACK_TOP == s[i])
            POP(c);
        else
            PUSH(s[i]);
        i++;
    }

    PUSH('\0');
    return stack;
}

最后更新于