데이터 구조 스 택 의 응용

2969 단어
응용 프로그램 1:
10 진법 이 다른 진법 으로 바 뀌 는 비 재 귀적 실현                                                        
#include<iostream>
#include "d://SeqStack.cpp"
using namespace std;
void f(int num,int radix)
{
    int m;
    SeqStack stack;
    stack.initStack();
  while(num/radix!=0)
  {
      m=num%radix;
      stack.Push(m);//  
      num=num/radix;
  }
  m=num%radix;
stack.Push(m);
stack.visit();
}
int main()
{
    int num,radix;
cout<<"          :";
cin>>num;
cout<<endl<<"          :";
cin>>radix;
cout<<endl<<num<<"   "<<radix<<"    ";
f(num,radix);
return 0;
}

응용 2:
괄호 일치 문제
#include<iostream>
using namespace std;
#include"  .cpp"
int match(char exp[],int n)
{
  int i=0;
  int mat=1;
  linkStack *stack=initStack();
  while(i<n&&mat)
  {
    switch (exp[i])
    {
      case '(':
      case '[':
      case '{':
      case '<':
         {
          stack=push(stack,exp[i]);
          cout<<"  :"<<exp[i]<<endl;
          i++;
         }
         break;
      case ')':
          {
           if(!isEmpty(stack)&&getTop(stack)=='(')
           {
            cout<<"  :";
            stack=pop(stack);
            i++;
           }
           else mat=0;
          }
          break;
      case ']':
          {
           if(!isEmpty(stack)&&getTop(stack)=='[')
           {
            stack=pop(stack);
            i++;
           }
           else mat=0;
          }
           break;
      case '}':
          {
           if(!isEmpty(stack)&&getTop(stack)=='{')
           {
            stack=pop(stack);
            i++;
           }
           else mat=0;
          }
          break;
      case '>':
          {
           if(!isEmpty(stack)&&getTop(stack)=='<')
           {
            stack=pop(stack);
            i++;
           }
           else mat=0;
          }
           break;
      default:break;
        
    }
  }
return mat;
}
int  main()
{
    char exp[]={'[','(','}'};
    cout<<match(exp,2);
return 0;
}

응용 3:
문자열 이 답장
#include<iostream>
using namespace std;
void sympthy(char str[])
{
 int i,j,n; 
 n=strlen(str);
 char temp[50];
 //           
 for(j=0;j<n/2;j++)
 {
  temp[j]=str[j];
 }
 
 //            
 if(n%2==0)i=j;
 else i=j+1;j=j-1;
 //         
 while(i<n&&str[i]==temp[j])
 {
  i++;
  j--;
 }
 if(i==n)
   cout<<"   !!!";
 else
	 cout<<"    !!!";
 

}
int main()
{
	char str[]="qwertyuytrewq";
	sympthy(str);
 return 0;
}
두 번 째 프로그램 (괄호 일치 문제) 인지 확인 하 는 데 오류 가 있 습 니 다. 지나 가 시 는 분 들 이 잘못 찾 아 주 셨 습 니 다!

좋은 웹페이지 즐겨찾기