能否提供一份关于C语言中顺序表的基本操作(如初始化插入、删除和查找,取值以及输出顺序表)的示例代码?
时间: 2024-12-12 08:18:11 浏览: 13
数据结构-C语言(第4章 串、数组和广义表.ppt)
当然可以。在C语言中,我们可以使用数组来实现简单的顺序表。这里是一个基础的顺序表操作的示例代码:
```c
#include <stdio.h>
// 定义顺序表结构体
typedef struct {
int *data; // 数据指针
int size; // 当前元素个数
int capacity; // 最大容量
} List;
// 初始化顺序表
List* create_list() {
List *list = (List*)malloc(sizeof(List));
list->data = NULL;
list->size = 0;
list->capacity = 5; // 初始容量
return list;
}
// 插入元素(在末尾)
void insert(List *list, int value) {
if (list->size == list->capacity) { // 如果已满,扩容
list->capacity *= 2;
list->data = (int*)realloc(list->data, list->capacity * sizeof(int));
}
list->data[list->size++] = value;
}
// 查找元素
int search(List *list, int key) {
for (int i = 0; i < list->size; i++) {
if (list->data[i] == key) {
return i;
}
}
return -1; // 元素未找到,返回-1
}
// 删除元素(通过索引)
void delete(List *list, int index) {
if (index >= 0 && index < list->size) {
memmove(&list->data[index], &list->data[index + 1], (list->size - index - 1) * sizeof(int));
list->size--;
} else {
printf("Invalid index.\n");
}
}
// 输出顺序表
void print_list(List *list) {
for (int i = 0; i < list->size; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
// 示例
int main() {
List *list = create_list();
insert(list, 1);
insert(list, 2);
insert(list, 3);
print_list(list); // 输出: 1 2 3
int index = search(list, 2);
if (index != -1) {
printf("Found element at index %d.\n", index);
delete(list, index); // 删除第二个元素
}
print_list(list); // 输出: 1 3
free(list->data);
free(list);
return 0;
}
```
这个示例展示了创建、插入、查找、删除和打印顺序表的基本操作。
阅读全文