C语言编程,实现顺序表的建立、插入、删除、查找、打印
时间: 2024-09-21 08:05:58 浏览: 39
在C语言中,我们可以使用数组结构来实现简单的顺序表。下面是一个基础的顺序表操作示例:
**1. 序列表的建立(初始化)**:
```c
#include <stdio.h>
typedef struct {
int* data; // 存储数据的指针
int size; // 当前元素的数量
int capacity; // 数组的容量
} SequenceList;
// 初始化顺序表,分配内存空间
void create_list(SequenceList* list) {
list->data = (int*)malloc(capacity * sizeof(int));
if (!list->data) {
printf("Memory allocation failed.\n");
return;
}
list->size = 0;
list->capacity = 5; // 初始容量设定
}
```
**2. 插入操作**:
```c
// 在指定位置插入元素
void insert(SequenceList* list, int value, int position) {
if (position > list->size) {
printf("Invalid position.\n");
return;
}
if (list->size == list->capacity) {
// 如果已满,需要扩容
list->capacity *= 2;
list->data = (int*)realloc(list->data, list->capacity * sizeof(int));
if (!list->data) {
printf("Memory reallocation failed.\n");
return;
}
}
memmove(&list->data[position+1], &list->data[position], (list->size - position) * sizeof(int)); // 移动元素
list->data[position] = value;
list->size++;
}
```
**3. 删除操作**:
```c
// 删除指定位置的元素
void delete(SequenceList* list, int position) {
if (position >= list->size) {
printf("Invalid position for deletion.\n");
return;
}
memmove(&list->data[position], &list->data[position + 1], (list->size - position - 1) * sizeof(int));
list->size--;
}
```
**4. 查找操作**:
```c
// 查找指定值的位置
int search(SequenceList* list, int value) {
for (int i = 0; i < list->size; i++) {
if (list->data[i] == value)
return i;
}
return -1; // 没找到则返回-1
}
```
**5. 打印顺序表**:
```c
// 打印顺序表内容
void print_list(SequenceList* list) {
for (int i = 0; i < list->size; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
```
阅读全文