#include <stdio.h>
#include <stdlib.h>
#define INITIAL_CAPACITY 10
typedef struct {
int *data;
int size;
int capacity;
} SeqList;
void initSeqList(SeqList *list) {
list->data = (int *)malloc(INITIAL_CAPACITY * sizeof(int));
list->size = 0;
list->capacity = INITIAL_CAPACITY;
}
void append(SeqList *list, int value) {
if (list->size >= list->capacity) {
int newCapacity = list->capacity * 2;
int *newData = (int *)realloc(list->data, newCapacity * sizeof(int));
if (!newData) {
printf("Memory allocation failed\n");
exit(1);
}
list->data = newData;
list->capacity = newCapacity;
}
list->data[list->size] = value;
list->size++;
}
void display(SeqList *list) {
for (int i = 0; i < list->size; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
void freeSeqList(SeqList *list) {
free(list->data);
list->data = NULL;
list->size = 0;
list->capacity = 0;
}
void reverse(SeqList *list, int l, int r) {
int low = l, high = r;
int temp;
while(low<=high){
temp = list->data[low];
list->data[low] = list->data[temp];
list->data[temp] = temp;
low++;
high--;
}
}
int main() {
SeqList list;
initSeqList(&list);
int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int arraySize = sizeof(array) / sizeof(array[0]);
for (int i = 0; i < arraySize; i++) {
append(&list, array[i]);
}
printf("顺序表的内容:\n");
display(&list);
reverse(&list, 2);
display(&list);
freeSeqList(&list);
return 0;
}