如何用C语言创建顺序表
时间: 2024-09-19 19:07:22 浏览: 33
C语言实现顺序表基本操作汇总
5星 · 资源好评率100%
在C语言中,可以使用数组或链表结构来创建顺序表。这里我们先介绍如何使用数组实现简单的顺序表:
**使用数组实现顺序表**
1. **数据结构定义**:
```c
typedef struct {
int capacity; // 数组容量
int size; // 当前元素个数
int* elements; // 存储元素的数组
} SeqList;
```
2. **初始化**:
```c
SeqList* createSeqList(int capacity) {
SeqList* list = malloc(sizeof(SeqList));
if (list != NULL) {
list->capacity = capacity;
list->size = 0;
list->elements = malloc(capacity * sizeof(int)); // 分配内存
if (list->elements == NULL) {
free(list);
list = NULL;
}
}
return list;
}
```
3. **添加元素**:
```c
void addElement(SeqList* list, int value) {
if (list->size >= list->capacity - 1) { // 判断是否需要扩容
list->capacity *= 2;
int* newElements = realloc(list->elements, list->capacity * sizeof(int));
if (newElements == NULL) {
printf("Memory allocation failed!\n");
exit(1);
}
list->elements = newElements;
}
list->elements[list->size++] = value;
}
```
4. **删除元素和获取元素**:
```c
int get(int index, SeqList* list) {
if (index < 0 || index >= list->size) {
return -1; // 指针越界处理
}
return list->elements[index];
}
// 删除指定位置的元素,示例函数,实际操作需考虑后续元素的调整
void removeElement(SeqList* list, int index) {
if (index < 0 || index >= list->size) return;
memmove(&list->elements[index], &list->elements[index + 1], sizeof(int) * (list->size - index - 1));
list->size--;
}
```
5. **释放资源**:
```c
void destroySeqList(SeqList* list) {
free(list->elements);
free(list);
}
```
**注意**:
- C语言本身并没有内置的`destroy`函数,上面的`removeElement`只是简单示例,真实场景下应有更复杂的元素移除机制。
- 使用数组实现顺序表在插入和删除元素时效率较低,因为需要移动大量元素。
阅读全文