编程实现线性表顺序存储的插入、删除和归并C语言
时间: 2024-03-14 14:30:18 浏览: 89
插入操作:
void insertElem(int *arr, int *len, int pos, int elem) {
// 判断插入位置是否合法
if (pos < 0 || pos > *len) {
printf("插入位置不合法!\n");
return;
}
// 判断线性表是否已满
if (*len >= MAXSIZE) {
printf("线性表已满,无法插入!\n");
return;
}
// 将插入位置之后的元素都向后移动一位
for (int i = *len - 1; i >= pos; i--) {
arr[i+1] = arr[i];
}
// 插入元素
arr[pos] = elem;
*len++;
printf("插入成功!\n");
}
删除操作:
void deleteElem(int *arr, int *len, int pos) {
// 判断删除位置是否合法
if (pos < 0 || pos >= *len) {
printf("删除位置不合法!\n");
return;
}
// 将删除位置之后的元素都向前移动一位
for (int i = pos; i < *len - 1; i++) {
arr[i] = arr[i+1];
}
*len--;
printf("删除成功!\n");
}
归并操作:
void merge(int *arr1, int len1, int *arr2, int len2, int *result) {
int i = 0, j = 0, k = 0;
while (i < len1 && j < len2) {
if (arr1[i] <= arr2[j]) {
result[k++] = arr1[i++];
} else {
result[k++] = arr2[j++];
}
}
while (i < len1) {
result[k++] = arr1[i++];
}
while (j < len2) {
result[k++] = arr2[j++];
}
}
其中,MAXSIZE是线性表最大长度,result是归并后的结果数组。
阅读全文