为CArrayList类增加以下方法: 1、实现就地逆置函数: public void reverse()
时间: 2024-09-21 13:06:56 浏览: 42
The-reverse-of-sqlist.rar_就地逆置
CArrayList 类是一个模拟 ArrayList 的 C 语言数据结构,如果需要为其添加一个就地逆置 (reverse) 函数,你可以创建一个新的方法,该方法会改变当前列表元素的顺序。这是一个简单的示例:
```c
#include <stdlib.h>
#include <stdio.h>
// 假设 CArrayList 已经定义好了,包含数组和长度等属性
typedef struct {
int* data;
size_t capacity;
size_t size;
} CArrayList;
// 就地逆置函数
void reverse(CArrayList* list) {
if (list->size <= 1) return; // 如果列表为空或只有一个元素,无需反转
int start = 0; // 开始位置
int end = list->size - 1; // 结束位置
while (start < end) { // 当开始小于结束时继续循环
int temp = list->data[start]; // 交换开始和结束位置的数据
list->data[start] = list->data[end];
list->data[end] = temp;
start++; // 移动开始位置
end--; // 移动结束位置
}
}
// 示例如何使用这个方法
int main() {
CArrayList myList = {NULL, 5, 3}; // 初始化一个有三个元素的列表
myList.data = malloc(sizeof(int) * myList.capacity);
myList.data[0] = 1;
myList.data[1] = 2;
myList.data[2] = 3;
myList.data[3] = 4;
myList.data[4] = 5;
printf("Original list: ");
for (size_t i = 0; i < myList.size; i++) {
printf("%d ", myList.data[i]);
}
reverse(&myList); // 调用逆置函数
printf("\nReversed list: ");
for (size_t i = 0; i < myList.size; i++) {
printf("%d ", myList.data[i]);
}
free(myList.data); // 释放内存
return 0;
}
```
阅读全文