编写一个C语言程序,实现顺序表的基本操作:查找、插入、删除。
时间: 2024-09-21 16:04:22 浏览: 69
在C语言中,我们可以创建一个简单的顺序表结构体,包含一个数组和指针指向最后一个元素。下面是一个基础的顺序表实现,包含了查找、插入和删除这三个基本操作:
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE];
int size;
int capacity;
} SeqList;
// 初始化顺序表
void init(SeqList* list) {
list->size = 0;
list->capacity = MAX_SIZE;
}
// 查找元素
int find(SeqList* list, int key) {
for (int i = 0; i < list->size; i++) {
if (list->data[i] == key)
return i;
}
return -1; // 如果未找到,返回-1
}
// 插入元素
void insert(SeqList* list, int key) {
if (list->size == list->capacity) {
// 扩容
list->capacity *= 2;
void* new_data = realloc(list->data, list->capacity * sizeof(int));
if (!new_data) {
printf("Memory allocation failed.\n");
return;
}
list->data = (int*)new_data;
}
list->data[list->size++] = key;
}
// 删除元素
void delete(SeqList* list, int index) {
if (index >= 0 && index < list->size) {
memmove(&list->data[index], &list->data[index + 1], sizeof(int) * (list->size - index - 1));
list->size--;
} else {
printf("Invalid index.\n");
}
}
int main() {
SeqList list;
init(&list);
// 示例操作
insert(&list, 5);
insert(&list, 10);
printf("Element at index 0 is: %d\n", find(&list, 5)); // 输出 0
delete(&list, 0);
printf("Size after deletion: %d\n", list.size); // 输出 1
return 0;
}
```
阅读全文