在顺序表中插入,删除,查找指定元素,合并两个顺序表的C语言代码
时间: 2023-05-12 13:04:23 浏览: 98
以下是顺序表的插入、删除、查找指定元素、合并两个顺序表的C语言代码:
// 定义顺序表结构体
typedef struct {
int *data; // 存储数据的数组
int length; // 当前长度
int capacity; // 最大容量
} SeqList;
// 初始化顺序表
void init(SeqList *list, int capacity) {
list->data = (int *)malloc(sizeof(int) * capacity);
list->length = 0;
list->capacity = capacity;
}
// 插入元素
void insert(SeqList *list, int index, int value) {
if (index < 0 || index > list->length) {
printf("插入位置不合法\n");
return;
}
if (list->length == list->capacity) {
printf("顺序表已满\n");
return;
}
for (int i = list->length - 1; i >= index; i--) {
list->data[i + 1] = list->data[i];
}
list->data[index] = value;
list->length++;
}
// 删除元素
void remove(SeqList *list, int index) {
if (index < 0 || index >= list->length) {
printf("删除位置不合法\n");
return;
}
for (int i = index; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->length--;
}
// 查找指定元素
int search(SeqList *list, int value) {
for (int i = 0; i < list->length; i++) {
if (list->data[i] == value) {
return i;
}
}
return -1;
}
// 合并两个顺序表
SeqList merge(SeqList *list1, SeqList *list2) {
SeqList newList;
init(&newList, list1->capacity + list2->capacity);
for (int i = 0; i < list1->length; i++) {
insert(&newList, i, list1->data[i]);
}
for (int i = 0; i < list2->length; i++) {
insert(&newList, list1->length + i, list2->data[i]);
}
return newList;
}
阅读全文