在存储整数的顺序表中删除k个元素,确保删除后的元素之和最小,输出删除k个元素后的顺序表(表中值相同的元素连续排列,保持原顺序不变)c语言
时间: 2024-05-24 19:11:49 浏览: 104
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
// 初始化顺序表
void InitList(SqList *L) {
L->length = 0;
}
// 插入元素
void ListInsert(SqList *L, int elem) {
if (L->length >= MAXSIZE) {
printf("顺序表已满,无法插入元素!\n");
return;
}
L->data[L->length] = elem;
L->length++;
}
// 删除元素
void ListDelete(SqList *L, int k) {
if (k > L->length) {
printf("删除元素个数大于顺序表长度,无法删除!\n");
return;
}
int i, j;
for (i = 0; i < k; i++) {
int min_index = i;
for (j = i + 1; j < L->length; j++) {
if (L->data[j] < L->data[min_index]) {
min_index = j;
}
}
int temp = L->data[i];
L->data[i] = L->data[min_index];
L->data[min_index] = temp;
}
L->length -= k;
}
// 打印顺序表
void PrintList(SqList L) {
int i;
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
InitList(&L);
// 插入元素
ListInsert(&L, 6);
ListInsert(&L, 3);
ListInsert(&L, 8);
ListInsert(&L, 2);
ListInsert(&L, 9);
ListInsert(&L, 1);
ListInsert(&L, 5);
// 打印原始顺序表
printf("原始顺序表:");
PrintList(L);
// 删除元素
ListDelete(&L, 3);
// 打印删除后的顺序表
printf("删除后的顺序表:");
PrintList(L);
return 0;
}
阅读全文