我使用堆棧和隊列來檢查給定單詞是否是迴文。我可以將一個新角色推入堆棧,但我不能將多個角色推入隊列。我看不出代碼中的錯誤。任何幫助將不勝感激。以下是使用Dev-C++的C++代碼。謝謝你的時間!找不到爲什麼堆棧工作,但不排隊檢查給定的單詞是否是迴文。
#include <iostream>
#include <stack>
#include <queue>
#include <string>
using namespace std;
void push_char()
{
string givenword; int sizeword, countchar;
string letter;
stack<string> stackword; string stawo1;
queue<string> queueword; string quewo1;
cout<<"enter the word to test "<<endl;
getline(cin,givenword);
string str (givenword);
sizeword=str.size();
cout<<" the word given "<<givenword<<" size of word= "<<sizeword <<endl;
countchar=0;
bool pali=true;
while ((countchar<sizeword))
{
stackword.push(str.substr(countchar,1));
queueword.push(str.substr(countchar,1));
cout<<" stack letter= "<<stackword.top()<<" queue letter= "<<queueword.front()<<endl;
countchar++;
if(stackword.top()==queueword.front())
cout<<"same letter found !"<<endl;
else
pali=false;
if (pali==false)
cout<<"not a palindrome"<<endl;
else
cout<<"palindrome!"<<endl;
}
}
int main()
{
push_char();
}
你確定你的隊列只推送一個字母嗎?當您執行queuewordfront()時,您將始終在打印輸出中獲得相同的字母,因爲隊列可用作First in First Out。將其更改爲.back(),我敢打賭你不會認爲你得到一個錯誤。 – Genzume
爲了清晰起見,我在代碼中添加了縮進,並且我相信您的一些代碼在循環中不應該是。不知道你打算寫什麼。 –
我嘗試在堆棧和隊列中每次都有新字母時顯示。在顯示屏上,堆棧顯示不同的字母,而隊列只顯示第一個字母。 – T4000