In: Computer Science
c++ code
Reverse the order of elements in a vector of integers using two functions:
(a) The first function takes the input vector a and return a vector b with the input data but in the reverse order, e.g. input: 1, 2, 3 and output 3, 2, 1.
(b) The second function is a recursive one and it reverses the input data in place (without using an additional vector).
#include <iostream>
#include <vector>
using namespace std;
/**
*
* @param vec vector to reverse elements. This vector remains unchanged
* @return reverse of vector
*/
vector<int> reverseReturn(const vector<int> &vec) {
vector<int> result;
for(int i = vec.size()-1; i >= 0; --i) {
result.push_back(vec[i]);
}
return result;
}
/**
* changes the parameter vector to hold the reverse of elements
* @param vec
*/
void reverse(vector<int> &vec) {
int temp;
for(int i = 0; i < vec.size()/2; ++i) {
temp = vec[i];
vec[i] = vec[vec.size()-i-1];
vec[vec.size()-i-1] = temp;
}
}
void print(vector<int> v) {
for(int i = 0; i < v.size(); ++i) {
cout << v[i] << " ";
}
cout << endl;
}
int main() {
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
cout << "Original vector: ";
print(v);
reverse(v);
cout << "Reverse vector: ";
print(v);
cout << "Reverse of reversed vector: ";
vector<int> v1 = reverseReturn(v);
print(v1);
return 0;
}