根据数据结构的书整合以下代码,可运行,若有错误请大家谅解,也欢迎大家指出,谢谢大家。
以分别是栈和队列的应用:
1.数制转换;
2.括号匹配;
3.汉诺塔问题;
一,数制转换
#include<iostream>
#include<stack>
using namespace std;
void BaseConvert(int num, int R)
{
stack<int> st;
char ch[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
if(num == 0)
{
cout << "0";
return;
}
while(num != 0)
{
st.push(num % R);
num = num / R;
}
cout << "转换结果:";
while(!st.empty())
{
cout << ch[st.top()];
st.pop();
}
cout << endl;
}
int main(){
int N,r;
cout<<"输入一个十进制的整数";
cin>>N;
cout<<"输入目标进制";
cin>>r;
if(r<2||r>16){
cout<<"输入错误";
return 1; }
BaseConvert(N,r);
return 0;}
二,括号匹配
r#include<iostream>
#include<stack>
#include<string>
using namespace std;
bool BracketMatch(string s)
{
stack<char> st;
for(int i=0;i<s.length();i++)
{
char c=s[i];
if(c == '(' || c == '[' || c == '{')
st.push(c);
else
{
if(st.empty()) return false;
// 匹配检验
if(c == ')' && st.top()!='(') return false;
if(c == ']' && st.top()!='[') return false;
if(c == '}' && st.top()!='{') return false;
st.pop();
}
}
return st.empty();
}
int main(){
string s;
cout<<"输入字符串";
cin>>s;
bool result= BracketMatch(s);
cout<<(result?"括号匹配成功":"匹配失败")<<endl;
return 0;
}
三,汉诺塔问题
#include<iostream>
using namespace std;
void Hanoi(int n, char A, char B, char C)
{
if(n == 1)
{
cout << "盘子 1 : " << A << " → " << C << endl;
return;
}
Hanoi(n-1, A, C, B);
cout << "盘子 " << n << " : " << A << " → " << C << endl;
Hanoi(n-1, B, A, C);
}
int main(){
int n;
cout<<"输入整数:";
cin>>n;
char A,B,C;
Hanoi(n,A,B,C);
return 0;
}