【review】栈 20110928 08:30

1.十进制转换为二进制:

http://blog.csdn.net/yillc/article/details/6824135

  1. #include <cstdio>  
  2. #include <stack>  
  3. using namespace std;  
  4.   
  5. int main()  
  6. {  
  7.     stack<int> S;  
  8.     int DecNum=0;  
  9.     scanf("%d",&DecNum);//输入一个十进制数  
  10.     int r=1;  
  11.   
  12.     while(r!=0)  
  13.     {  
  14.         r=DecNum/2;  
  15.         S.push(DecNum%2);  
  16.         DecNum/=2;  
  17.     }  
  18.     while(S.empty()==0)  
  19.     {  
  20.         printf( "%d", S.top( ) );  
  21.         S.pop();  
  22.     }  
  23.     return 0;  
  24. }  

2. 括号匹配

判断括号是否匹配的方法:依次读入每个括号,如果是左括号,则压入栈中;如果是右括号,则判断栈顶元素是否是与之匹配的左括号,如果是,则弹出该左括号,如果不是或者栈为空,则可以判定括号不匹配


 

    1. <p>#include <cstdio>  
    2. #include <stack>  
    3. using namespace std;</p><p>int main()  
    4. {  
    5.  stack<int> S;  
    6.  char str[100];  
    7.  scanf("%s",str);//输入一系列括号  
    8.  int sign=0;  
    9.  for(int i=0;i<sizeof(str);i++)  
    10.  {  
    11.   if(str[i]=='(')  
    12.    S.push(str[i]);  
    13.   if(str[i]==')')  
    14.   {  
    15.    if(S.empty()==1)  
    16.    {  
    17.     printf("no");  
    18.     sign=1;  
    19.     break;  
    20.    }  
    21.    else if(S.top()=='(')  
    22.     S.pop();  
    23.    else   
    24.    {  
    25.     printf("no");  
    26.     sign=1;  
    27.     break;  
    28.    }  
    29.   }  
    30.  }  
    31.  if(sign==0)  
    32.  {  
    33.   if(S.empty()==1)  printf("yes");  
    34.   else printf("no");  
    35.  }  
    36.  return 0;  
    37. }</p>     

原文地址:https://www.cnblogs.com/tabcdt/p/2954972.html