Как вставить половину стека в другой стек - PullRequest
0 голосов
/ 17 марта 2019

Эй, я работаю над программой, использующей два стека (созданных с использованием массива), чтобы определить, является ли строка палиндромом.

Я объявил два стека.План состоит в том, чтобы прочитать строку по очереди и поместить их в первый стек.

Затем я вытолкну половину стека и вставлю их во второй стек.Я не могу понять, как выкинуть и сдвинуть половину стека.

1 Ответ

1 голос
/ 17 марта 2019

Таким образом, даны два объекта стека, которые вначале не содержат значения:

Stack stOne, stTwo;

Предполагается, что вы реализовали ::size(), ::push(), ::pop(), где pop возвращает значение, хранящееся в верхней части стека, для вашего стека.объекты, вы хотите поместить все символы данной строки в stOne.Тогда вам придется выдавать stOne на stOne.size()/2 количество раз и вставлять символы в stTwo:

void solvePalindrome(std::string str){
    for(int i=0; i<str.size(); i++){
        stOne.push(str[i]);
    }
    for(int i=0; i<stOne.size()/2; i++){
        stTwo.push(stOne.pop());
    }
    //do your comparison here
}

В качестве альтернативы, вы можете напрямую использовать str.size () / 2 вместо stOne.size () / 2, если вы еще не реализовали ::size().

Примечание. Если в строке есть неравномерное количество символов, она будет округляться (этаж) stOne.size () / 2.Весь код в CPP.

...