/*
題目描述:
輸入一行字符(可包含空格)
將其反向輸出
示例:
輸入:
hello world
輸出:
dlrow olleh
*/
#include <iostream>
#include <stack> // support for stack template class
using namespace std;
//方法一:棧方法
void print_Inverse_Using_Stack(char *s)
{
stack<char> ss;
for(int i = 0; i < strlen(s); i++)
{
ss.push(s[i]);
}
while(!ss.empty())
{
cout<<ss.top();
ss.pop();//注意top不會進行出棧操作,所以需手動pop
}
}
//方法二:遞歸方法
void print_Inverse_Using_Recusive(char *s, int i)
{
if(i == strlen(s))
return;
i++;
print_Inverse_Using_Recusive(s, i);
cout<<s[--i];
}
int main()
{
//對於char* / char[]
char s[1001];
cout<<"Please input char[]:"<<endl;
cin.getline(s, 1000);//iostream下的函數, 第二個參數表示允許的最大輸入長度
print_Inverse_Using_Recusive(s,0);
cout<<endl;
return 0;
}
這題需要掌握三點:
1.如何讀取一行字符串輸入(包括空格),見C++讀取一行字符串輸入
2.STL棧的使用,最常用的是top(),pop(),empty()三個函數
3.遞歸的思想及其應用
這題解法其實跟我的另一篇博客解題思想差不多:
反倒鏈表反轉稍微處理得還複雜些。