我想寫一個程序,將驗證用括號括起來的使用堆棧的用戶輸入。我試圖做到這一點,而不使用STL容器或遞歸。我有點碰到一個路障,我正在尋找一個正確方向的小推。我想我有點接近,但我覺得我也可以簡單化它(我在通過自主學習教學的過程)c + +支架驗證與堆棧
這是我到目前爲止有:
#include <iostream>
#include <string>
#include "ArrayStack.h"
using namespace std;
bool test(char *argg);
int main()
{
string input;
int size = 50;
cout << "enter here: ";
getline(cin, input);
for (int i = 0; i < size; i++)
test(input[i]);
}
bool test(char *argg)
{
ArrayStack S;
char D;
while (*argg) {
switch(*argg) {
case '[': case '{': case '(':
S.push(*argg);
break;
case ']':
if(S.isEmpty())
return false;
D = S.pop();
if(D!='[')
return false;
break;
case '}':
if(S.isEmpty())
return false;
D = S.pop();
if(D!='{')
return false;
break;
case ')':
if(S.isEmpty())
return false;
D = S.pop();
if(D!='(')
return false;
break;
default:
return false;
}// end switch
argg++;
}// end while
return S.isEmpty(); // return true if reach here with empty stack
}
謝謝對於提前任何幫助
爲什麼你沒有告訴你的問題是什麼(它似乎是代碼不能編譯)?無論如何,至少有兩個人今天/昨天都問過相同的作業任務,所以請看這些答案。一般的觀察:不是在'main'之前聲明一個函數,而是在之後定義它,爲什麼不在'main'之前定義它,呵呵? –
我可以發誓,我看到在過去幾個小時內出現這些問題中的兩個,但我似乎無法找到他們... – Xeo
是的,他確實問過同樣的問題http://stackoverflow.com/questions/8373159/stack-of-chars-to-check-balanced-brackets – Drahakar