Cho mảng chuỗi. Đảo thứ tự các phần tử: phần tử cuối lên đầu, v.v.
Ví dụ
Đầu vào - {"learn", "programming", "at", "tutorialspoint"}
Đầu ra - {"tutorialspoint", "at", "programming", "learn"}
Phương pháp
- 2 con trỏ: start=0, end=n-1
- Hoán đổi strarr[start] và strarr[end]
- start++, end-- cho đến khi start >= end
- Chỉ hoán đổi con trỏ, không copy chuỗi → nhanh
Chương trình mẫu
#include <stdio.h>
#include <string.h>
void reverseStringArray(char* strarr[], int n) {
char* temp;
int end = n - 1;
for (int start = 0; start < end; start++) {
temp = strarr[start];
strarr[start] = strarr[end];
strarr[end] = temp;
end--;
}
}
int main() {
char* strarr[] = {"learn", "programming", "at", "tutorialspoint"};
int n = sizeof(strarr)/sizeof(strarr[0]);
printf("Trước: ");
for (int i = 0; i < n; i++) printf("%s ", strarr[i]);
reverseStringArray(strarr, n);
printf("\nSau: ");
for (int i = 0; i < n; i++) printf("%s ", strarr[i]);
return 0;
}
Kết quả
Trước: learn programming at tutorialspoint Sau: tutorialspoint at programming learn