编写一个函数revert(),实现对一个数组中的元素顺序进行逆置。 在主函数中实现数组元素的输入和输出。
时间: 2023-03-28 09:00:31 浏览: 133
好的,这是一个编程问题,我可以回答。以下是revert()函数的代码实现:
void revert(int arr[], int len){
int i, temp;
for(i=; i<len/2; i++){
temp = arr[i];
arr[i] = arr[len-i-1];
arr[len-i-1] = temp;
}
}
在主函数中,您可以先输入数组的长度和元素,然后调用revert()函数进行逆置,最后输出逆置后的数组元素。
相关问题
2. 编写一个函数revert(),实现对一个数组中的元素顺序进行逆置。 在主函数中实现数组元素的输入和输出。
好的,这是一个编程问题,我可以回答。以下是revert()函数的代码:
void revert(int arr[], int n){
int i, temp;
for(i=; i<n/2; i++){
temp = arr[i];
arr[i] = arr[n-i-1];
arr[n-i-1] = temp;
}
}
在主函数中,您可以先输入数组的元素,然后调用revert()函数进行逆置,最后输出逆置后的数组元素。
请编写一个函数int list_revert(SLIST_S *listA, SLIST_S *listB),将传入的单向链表listA反转后返回listB
好的,这是一个使用递归的单向链表反转算法:
```
#include <stdio.h>
typedef struct SLIST {
int data;
struct SLIST *next;
} SLIST_S;
SLIST_S *list_revert(SLIST_S *curr, SLIST_S *prev, SLIST_S *listB) {
if (curr == NULL) {
listB = prev;
return listB;
}
SLIST_S *next = curr->next;
curr->next = prev;
prev = curr;
return list_revert(next, prev, listB);
}
int main() {
SLIST_S *listA = (SLIST_S *)malloc(sizeof(SLIST_S));
SLIST_S *listB = NULL;
listA->data = 1;
listA->next = (SLIST_S *)malloc(sizeof(SLIST_S));
listA->next->data = 2;
listA->next->next = (SLIST_S *)malloc(sizeof(SLIST_S));
listA->next->next->data = 3;
listA->next->next->next = NULL;
listB = list_revert(listA, NULL, listB);
while (listB != NULL) {
printf("%d ", listB->data);
listB = listB->next;
}
return 0;
}
```
函数接收三个参数:当前要反转的节点`curr`、反转后的上一个节点`prev`和用来存储反转后单向链表的指针`listB`。函数返回反转后的单向链表`listB`。函数使用递归的方式依次将链表中的节点反转。最后返回反转后的单向链表`listB`。
阅读全文