定义顺序表的数据类型——顺序表结构体SeqList,在SeqList基础上实现题目要求的插入、删除、查找等基本操作,为便于查看操作结果,设计一个输出函数依次输出顺序表的元素。简单起见,本实验假定线性表的数据元素为int型,
时间: 2024-10-09 09:11:03 浏览: 33
在C语言中,我们可以创建一个名为`SeqList`的顺序表数据类型,它通常包含一个数组和两个指针,一个指向当前元素,另一个指向最后一个已填充的元素。下面是简单的`SeqList`结构体定义:
```c
typedef struct {
int* data; // 数组存储元素
int capacity; // 表的最大容量
int size; // 当前元素的数量
} SeqList;
```
接下来,我们为这个结构体实现一些基础操作:
1. **初始化** (`createSeqList`):
```c
SeqList createSeqList(int capacity) {
SeqList list = {NULL, capacity, 0};
list.data = malloc(capacity * sizeof(int));
if (!list.data) {
printf("Memory allocation failed.\n");
return NULL;
}
return list;
}
```
2. **插入** (`insert`):
```c
void insert(SeqList* list, int value) {
if (list->size == list->capacity) {
list->capacity *= 2;
list->data = realloc(list->data, list->capacity * sizeof(int));
if (!list->data) {
printf("Memory reallocation failed.\n");
return;
}
}
list->data[list->size++] = value;
}
```
3. **删除** (`delete`,假设删除的是第一个元素,扩展到其他位置需要额外处理索引):
```c
void delete(SeqList* list) {
if (list->size > 0) {
list->size--;
list->data[0] = list->data[list->size];
}
}
```
4. **查找** (`search`):
```c
int search(SeqList* list, int value) {
for (int i = 0; i < list->size; i++) {
if (list->data[i] == value) {
return i;
}
}
return -1; // 如果未找到,返回-1
}
```
5. **输出** (`printSeqList`):
```c
void printSeqList(SeqList list) {
printf("[ ");
for (int i = 0; i < list.size; i++) {
printf("%d ", list.data[i]);
}
printf("]\n");
}
```
阅读全文