应用一:
十进制转为其他进制的非递归实现
#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;
}
应用二:
括号的匹配问题
#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;
}
应用三:
检查一个字符串是否是回文#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;
}
第二个程序(匹配括号问题上)有点错误,各位路过的帮忙找找错啊!
#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;
}