基于Monster 组和GPT的调写:
1
int deleteMin(List* list) {
if (list == NULL || list->size == 0) {
printf("Error: Empty List\n");
exit(1);
}
int minIndex = 0;
int minValue = list->data[0];
for (int i = 1; i < list->size; i++) {
if (list->data[i] < minValue) {
minIndex = i;
minValue = list->data[i];
}
}
int lastValue = list->data[list->size - 1];
list->data[minIndex] = lastValue;
list->size--;
return minValue;
}
2.
void deleteRange(List* list, int t) {
if (list == NULL || list->size == 0) {
printf("Error: Empty List\n");
exit(1);
}
int writeIndex = 0;
for (int i = 0; i < list->size; i++) {
if (list->data[i] < t) {
list->data[writeIndex++] = list->data[i];
}
}
list->size = writeIndex;
}
3.
void deleteSortedRange(List* list, int t) {
if (list == NULL || list->size == 0) {
printf("Error: Empty List\n");
exit(1);
}
int writeIndex = 0;
for (int i = 0; i < list->size; i++) {
if (list->data[i] < t) {
list->data[writeIndex++] = list->data[i];
} else {
break;
}
}
list->size = writeIndex;
}
4.
List* mergeSortedLists(List* list1, List* list2) {
if (list1 == NULL || list1->size == 0) {
return list2;
} else if (list2 == NULL || list2->size == 0) {
return list1;
}
List* mergedList = createList(list1->size + list2->size);
int i = 0, j = 0, k = 0;
while (i < list1->size && j < list2->size) {
if (list1->data[i] < list2->data[j]) {
mergedList->data[k++] = list1->data[i++];
} else {
mergedList->data[k++] = list2->data[j++];
}
}
while (i < list1->size) {
mergedList->data[k++] = list1->data[i++];
}
while (j < list2->size) {
mergedList->data[k++] = list2->data[j++];
}
mergedList->size = k;
return mergedList;
}
5.
void removeDuplicates(List* list) {
if (list == NULL || list->size == 0) {
printf("Error: Empty List\n");
exit(1);
}
int writeIndex = 0;
for (int i = 0; i < list->size; i++) {
if (i == 0 || list->data[i] != list->data[i-1]) {
list->data[writeIndex++] = list->data[i];
}
}
list->size = writeIndex;
}
就是链表,涉及到链表排序和遍历