Объясняя проблему преформации в данном блоке кода?
Честно говоря, я решил этот вопрос, но чтобы убедиться, что я сделал это правильно, мне нужно спросить вас, ребята, считаете ли вы, что я сделал это правильно.
(ля) Объясните кратко, но ясно, что делает приведенная ниже программа на C++. Обратите внимание, что используются шаблонные версии ADT стека и очереди, но в остальном их функциональность и API одинаковы.
void main() { char inChar, stackChar, queueChar; StackType<char> stack; QueueType<char> queue; bool check = true; cout << "Enter a string and press return." << endl; cin.get(inChar); while (inChar != '\n') { stack.Push(inChar); queue.Enqueue(inChar); cin.get(inChar); } while (check && !queue.IsEmpty()) { stack.Top(stackChar); stack.Pop(); queue.Dequeue(queueChar); if (stackChar != queueChar) check = false; } if (check) cout << "Yes it is!" << endl; else cout << "No it's not." << endl; }
- Я думаю, что данная программа на c++ проверяет, является ли данная строка палиндромом, не помещая строку как в стек, так и в очередь. используя операции pop и dequeue, получите первый и последний символы и проверьте, равны ли они, если не выходите.
(b) Объясните, какие проблемы с производительностью имеет вышеприведенная программа, и предложите, как это исправить. Никакого кода не требуется; просто кратко объясните, что вы будете делать.
- Здесь необходимо инициализировать символьные переменные stackChar и queueChar , поскольку они используются для функций pop и dequeue, и после этого значения должны быть обновлены текущими верхними и первыми значениями стека и очереди.
Я буду очень признателен!
Что я уже пробовал:
Отвечая на вопросы, приведенные выше.