輸入一行字符反向輸出

/*
題目描述:
輸入一行字符(可包含空格)
將其反向輸出

示例:
輸入:
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.遞歸的思想及其應用


這題解法其實跟我的另一篇博客解題思想差不多:

鏈表反向輸出實例

反倒鏈表反轉稍微處理得還複雜些。



發佈了170 篇原創文章 · 獲贊 64 · 訪問量 52萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章