c++ vector元素逆置
时间: 2023-10-19 19:33:09 浏览: 41
要实现C数组的元素逆置,可以使用以下代码:
```C++
#include<iostream>
using namespace std;
int main() {
int arr = { 1,3,2,5,4 };
int start = 0;
int end = sizeof(arr) / sizeof(arr = arr[end];
arr[end = temp;
start++;
end--;
}
for (int i = 0; i < 5; i++) {
cout << arr[i << " ";
}
return 0;
}
```
这段代码中,我们首先声明了一个5个元素的数组arr,并给它赋上初始值。然后,我们使用两个指针start和end分别指向数组的头部和尾部。通过交换start和end指向的元素,来逆置数组的元素,直到start和end相遇为止。最后,我们使用for循环遍历数组并输出逆置后的结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
相关问题
c++单向链表逆置递归
以下是一个基于递归方法的C++单向链表逆置实现:
```cpp
void reverseList(Node* current, Node* prev, Node** head) {
if (!current->next) {
*head = current;
current->next = prev;
return;
}
Node* nextNode = current->next;
current->next = prev;
reverseList(nextNode, current, head);
}
void reverseLinkedList(Node** head) {
if (!head) return;
reverseList(*head, nullptr, head);
}
```
这里定义了两个函数,`reverseLinkedList` 是调用入口,它接收一个指向头结点指针的指针,通过调用 `reverseList` 函数实现递归逆置。
在 `reverseList` 函数中,首先判断当前节点是否为尾节点,如果是则更新头结点指针和当前节点的 `next` 指针,递归结束。
否则,先保存下一个节点的指针,然后更新当前节点的 `next` 指针为前一个节点,递归调用 `reverseList` 函数。
最后,由于递归过程中,每次传入的都是当前节点的下一个节点,因此需要在 `reverseLinkedList` 函数中对头结点指针进行判空处理。
使用示例:
```cpp
int main() {
Node* head = nullptr;
append(&head, 1);
append(&head, 2);
append(&head, 3);
printList(head); // 输出 1 -> 2 -> 3 ->
reverseLinkedList(&head);
printList(head); // 输出 3 -> 2 -> 1 ->
return 0;
}
```
其中,`append` 函数用于向链表尾部添加元素,`printList` 函数用于遍历链表输出所有元素。
C++用递归逆置字符串
可以递归函数来逆置一个字符串,具体实现如下:
```c++
#include <iostream>
#include <string>
using namespace std;
void reverse(string& s, int left, int right) {
if (left >= right) {
return;
}
// 交换左右两边的字符
swap(s[left], s[right]);
// 递归处理中间的字符
reverse(s, left + 1, right - 1);
}
int main() {
string s = "Hello, world!";
reverse(s, 0, s.size() - 1);
cout << s << endl;
return 0;
}
```
在递归函数`reverse()`中,我们比较左右两端的下标,如果左下标大于等于右下标,说明已经逆置完成,直接返回。否则,我们将左右两个字符交换,并递归处理中间的字符。最终,整个字符串就被逆置了。