建立一个有十个元素的顺序表,用C语言实现查找插入和删除功能
时间: 2024-09-19 10:13:23 浏览: 15
在C语言中,我们可以创建一个简单的线性结构体数组来代表顺序表,然后提供函数来实现插入、查找和删除操作。这里是一个基本的示例:
首先,定义一个结构体表示列表项:
```c
typedef struct {
int data; // 数据域
} ListElement;
```
接下来,创建一个顺序表结构并定义查找、插入和删除的操作:
```c
#include <stdio.h>
#include <stdlib.h>
// 创建顺序表
typedef struct {
ListElement *elements; // 指向元素的指针
size_t size;
size_t capacity;
} SequentialList;
SequentialList* create_list(size_t capacity) {
SequentialList *list = (SequentialList*)malloc(sizeof(SequentialList));
list->elements = (ListElement*)malloc(capacity * sizeof(ListElement));
list->size = 0;
list->capacity = capacity;
return list;
}
// 插入元素
void insert_element(SequentialList *list, int value) {
if (list->size == list->capacity) {
list->capacity *= 2;
list->elements = (ListElement*)realloc(list->elements, list->capacity * sizeof(ListElement)); // 扩展容量
}
list->elements[list->size].data = value;
list->size++;
}
// 查找元素
int find_element(const SequentialList *list, int target) {
for (size_t i = 0; i < list->size; i++) {
if (list->elements[i].data == target)
return i; // 如果找到目标值,返回索引
}
return -1; // 如果未找到,返回-1
}
// 删除元素(假设我们按索引从0开始)
void delete_element(SequentialList *list, size_t index) {
if (index >= list->size || !list->elements) return; // 防止越界
memmove(&list->elements[index], &list->elements[index+1], (list->size - index - 1) * sizeof(ListElement));
list->size--;
if (list->size < list->capacity / 4 && list->capacity > 2) { // 衰减策略,减少内存浪费
list->capacity /= 2;
list->elements = (ListElement*)realloc(list->elements, list->capacity * sizeof(ListElement));
}
}
// 关闭并释放资源
void destroy_list(SequentialList **list_ptr) {
free(*list_ptr->elements);
free(*list_ptr);
*list_ptr = NULL;
}
int main() {
SequentialList *list = create_list(10);
// 使用insert_element插入元素
// 使用find_element查找元素
// 使用delete_element删除元素
destroy_list(&list);
return 0;
}
```
这个例子展示了如何创建、插入、查找和删除顺序表的基本操作。请注意,这只是一个基础版本,实际应用中可能需要处理更多的边界条件和异常情况。