Как Записать цифры в один стек, а литералы в другой при считывании из строки?

С клавиатуры вводится строка символов. Сохранить ее, сформировав 2 стека - стек, содержащий литеры цифры, и стек, содержащий буквы латинского алфавита. Сформировать динамический список, в который поместить поочередно компоненты стеков. После исчерпания одного из стеков процедуру формирования динамического списка прекратить. Условие не выполняется, записываются все литералы только в стек num.

`#include <iostream>
#include <string>

class Node {
public:
    char liter;
    Node* next;
public:
    Node(char liter) {
        this->liter = liter;
        this->next = NULL;
    }
};

class Stack {
public:
    Node* head;
    Node* tail;
public:
    Stack() {
        this->head = this->tail = NULL;
    }
    ~Stack() {//диструтор освобождает память
        while (head != NULL) pop_front();
    }
    void pop_front() {//удаление первого эл
        if (head = NULL)return;
        if (head == tail) {
            delete tail;
            head = tail=  NULL;
            return;
        }
        Node* node = head;
        head = node->next;
        delete node;

    }
    //обавляем в начало элем
    void push_front(char liter) {
        Node* node = new Node(liter);
        node->next = head;
        head = node;
        if (tail == NULL)
            tail = node;
    }
    void show() {
        while (head != NULL) {
            std::cout << head->liter ;
            head = head->next;
        }
    }

};

int main() {
    Stack num,lit;
    std::string str;
    std::cout << "INPUT STRING" << std::endl;
    std::cin >> str;
    for (char ch : str){ 
        if ('0' <= ch <= '9') num.push_front(ch);
        else lit.push_front(ch);
    }
    
    lit.show();
    return 0;
}

Ответы (1 шт):

Автор решения: Vladimir Ignatenko

Очень странно, что компилятор не ругнулся на это условие

if ('0' <= ch <= '9')

Попробуйте все же заменить на

if ('0' <= ch && ch <= '9')

И в качестве совета: выделяйте блоки скобками. Код будет понятней. И модифицировать его потом будет проще.

→ Ссылка