c语言,实现顺序表的建立、求长度,取元素、修改元素、插入、删除等顺序表的基本操作。
时间: 2024-10-12 08:07:37 浏览: 44
在C语言中,顺序表是一种简单的线性数据结构,它通过数组的形式存储数据。以下是顺序表的一些基本操作:
1. **建立顺序表**:
- 定义结构体存放数据,例如:
```c
typedef struct {
int data; // 数据域
int capacity; // 表容量
int size; // 实际元素个数
} List;
```
- 初始化列表时,创建一个新的List实例,设置初始容量和size为0。
2. **求长度(获取大小)**:
- 只需返回成员变量`size`即可:
```c
int length(List* list) {
return list->size;
}
```
3. **取元素**:
- 使用索引来访问元素,需要检查索引是否越界:
```c
int get(List* list, int index) {
if (index < 0 || index >= list->size) {
return -1; // 或抛出异常
}
return list->data[index];
}
```
4. **修改元素**:
- 需同样检查索引范围,然后更新对应的值:
```c
void set(List* list, int index, int value) {
if (index < 0 || index >= list->size) {
return;
}
list->data[index] = value;
}
```
5. **插入**:
- 如果空间足够,直接在指定位置插入,然后更新`size`:
```c
void insert(List* list, int index, int value) {
if (list->size == list->capacity) {
resize_list(list); // 扩容操作
}
memmove(&list->data[index + 1], &list->data[index], list->size - index);
list->data[index] = value;
list->size++;
}
```
6. **删除**:
- 删除指定位置的元素,然后将后续元素向前移动并减小`size`:
```c
void delete(List* list, int index) {
if (index < 0 || index >= list->size) {
return;
}
memmove(&list->data[index], &list->data[index + 1], list->size - index - 1);
list->size--;
}
```
7. **resize_list()函数**(用于扩容):
```c
void resize_list(List* list) {
list->capacity *= 2; // 可调整增长因子
list->data = realloc(list->data, sizeof(int) * list->capacity);
}
```
记得处理好内存分配和释放,以及边界条件和错误情况。以上就是C语言中顺序表的基本操作。
阅读全文