我想通過使用堆棧來檢查括號是否平衡,例如,如果我爲每個打開的括號輸入(()),那麼存在一個封閉的平衡點; 但每次cout都不平衡。 我無法找到我的代碼有什麼問題。平衡括號
#include <iostream>
using namespace std;
struct node
{
char data ;
node* link;
};
bool pop(node*&top,char val)
{
if(top==NULL)
return false;
else
val=top->data;
node* temp=top;
top=top->link;
delete temp;
return true;
}
bool push (node*&top,char val)
{
node* nptr=new node;
if(nptr==NULL)
return false;
nptr->data=val;
nptr->link=top;
top=nptr;
return true;
}
bool balancedbracket(char *s,int size1)
{
node* k;
if (s[0]==')')
{
return false;
}
for(int i=0;i<size1;i++)
{
if(s[i]=='(')
{
push(k,'(');
}
else if (s[i]==')')
{
pop(k,'(');
}
}
if (k==NULL)
{
return true;
}
else{
return false;
}
}
int main()
{
char *a=new char;
int sizeofmyarray;
cout<<"enter size:";
cin>>sizeofmyarray;
cout<<"enter array:";
for(int i=0;i<sizeofmyarray;i++)
{
cin>>a[i];
}
if(balancedbracket(a,sizeofmyarray))
cout<<"is balanced";
else
cout<<"not balanced";
system("pause");
}
解決此類問題的正確工具是您的調試器。在*堆棧溢出問題之前,您應該逐行執行您的代碼。如需更多幫助,請閱讀[如何調試小程序(由Eric Lippert撰寫)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。至少,您應該\編輯您的問題,以包含一個[最小,完整和可驗證](http://stackoverflow.com/help/mcve)示例,該示例再現了您的問題,以及您在調試器。 –
你的'''''''在每個'{'有一個關閉'}'方面是平衡的。但是,這並不意味着您的_encapsulation_是正確的(在語法和/或邏輯上)。使用** indentation **可以使代碼更加清晰,特別是當您擁有**塊**的層次結構時(如您的情況),這是很自定義的。 – FDavidov
IHe正在談論的是程序的任務,而不是代碼中的括號XD – Swift