在算法设计中,逆序排列是一种常见的操作。它可以应用于各种数据结构和场景,例如数组、链表、字符串等。下面是一些使用C语言实现逆序排列的示例:
- 逆序排列数组:
#includevoid reverseArray(int arr[], int start, int end) { int temp; while (start < end) { temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; } } int main() { int arr[] = {1, 2, 3, 4, 5}; int n = sizeof(arr) / sizeof(arr[0]); printf("Original array: "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); reverseArray(arr, 0, n - 1); printf("Reversed array: "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
- 逆序排列链表:
#include#include struct Node { int data; struct Node* next; }; struct Node* reverseList(struct Node* head) { struct Node *prev = NULL; struct Node *current = head; struct Node *next = NULL; while (current != NULL) { next = current->next; current->next = prev; prev = current; current = next; } return prev; } void printList(struct Node* head) { while (head != NULL) { printf("%d -> ", head->data); head = head->next; } printf("NULL\n"); } int main() { struct Node* head = NULL; struct Node* temp; int arr[] = {1, 2, 3, 4, 5}; int n = sizeof(arr) / sizeof(arr[0]); for (int i = n - 1; i >= 0; i--) { temp = (struct Node*)malloc(sizeof(struct Node)); temp->data = https://www.yisu.com/ask/arr[i];>next = head; head = temp; } printf("Original list: "); printList(head); head = reverseList(head); printf("Reversed list: "); printList(head); return 0; }
- 逆序排列字符串:
#include#include void reverseString(char* str) { int len = strlen(str); char temp; for (int i = 0; i < len / 2; i++) { temp = str[i]; str[i] = str[len - 1 - i]; str[len - 1 - i] = temp; } } int main() { char str[] = "Hello, world!"; printf("Original string: %s\n", str); reverseString(str); printf("Reversed string: %s\n", str); return 0; }
这些示例展示了如何在C语言中实现逆序排列。你可以根据需要修改这些代码以适应不同的数据结构和场景。