#include<stack>
using namespace std;
class Reverse
{
public:
//字符串完全逆序
void array_all_reverse(string &array);
void array_all_reverse(char* array);
//字符串中单词逆序
void array_reverse(string &array);
void array_reverse(char* array);
};
void Reverse::array_all_reverse(string &array)
{
stack<char> input_array;
int i = 0;
for(;i < array.size();i++)
{
input_array.push(array[i]); //将数组中的字符全部入栈
}
i = 0;
while(!input_array.empty())
{
array[i++] = input_array.top();
input_array.pop();
}
}
void Reverse::array_all_reverse(char* array)
{
stack<char> input_array;
int i = 0;
//cout << strlen(array) << endl;
//cout << sizeof(array) << endl;
for(;i < strlen(array);i++)
{
input_array.push(array[i]); //将数组中的字符全部入栈
}
i = 0;
while(!input_array.empty())
{
array[i++] = input_array.top();
input_array.pop();
}
}
void Reverse::array_reverse(string &array)
{
stack<char> transition;
stack<char> end;
cout << array.size() << endl;
for(int i=0 ; i<array.size();i++)
{
transition.push(array[i]);
// cout << "array[" << i << "]=" << array[i] << endl;
cout << "array[" << i << "]=" <<transition.top() << endl;
if(array[i] == 32 || array[i] == '\0')
{
while(!transition.empty())
{
// cout << "aaaaa" << endl;
end.push(transition.top());
transition.pop();
cout << end.top() << endl;
}
}
}
i = 0;
while(!end.empty())
{
array[i] = end.top();
cout << "array[" << i << "]=" << array[i] << endl;
i++;
end.pop();
}
}
void Reverse::array_reverse(char* array)
{
stack<char> transition;
stack<char> end;
for(int i=0 ; i < strlen(array) ; i++)
{
transition.push(array[i]);
if(array[i] == 32)
{
while(!transition.empty())
{
end.push(transition.top());
transition.pop();
}
}
}
i = 0;
while(!end.empty())
{
array[i++] = end.top();
end.pop();
}
}
#include <iostream>
#include <string>
#include "Reverse.h"
using namespace std;
int main()
{
Reverse array_re;
string buf("My name is zhangli ! ") ;
cout << "逆序前字符串为:" << buf << endl;
array_re.array_all_reverse(buf);
cout << "逆序后字符串为:" << buf << endl;
array_re.array_all_reverse(buf);
cout << "还原后字符串为:" << buf << endl;
array_re.array_reverse(buf);
cout << "逆序2后字符串为:" << buf << endl;
char buf2[] = "My name is zhangli ! ";
cout << "逆序前字符串为:" << buf2 << endl;
array_re.array_all_reverse(buf2);
cout << "逆序后字符串为:" << buf2 << endl;
array_re.array_all_reverse(buf2);
cout << "还原后字符串为:" << buf2 << endl;
array_re.array_reverse(buf2);
cout << "逆序2后字符串为:" << buf2 << endl;
return 0;
}