编写完整程序seqlist.c或seqlist.cpp实现顺序表的初始化、查找、插入、删除、遍历、查看实际长度等操作。
时间: 2024-11-03 22:13:15 浏览: 50
在C语言中,我们可以创建一个名为`SequList.h`的头文件来定义顺序列表结构以及相应的函数声明,然后在`SequList.c`中提供具体的实现。这里是一个简单的示例:
```c
// SequList.h
#ifndef SEQULIST_H
#define SEQULIST_H
typedef struct {
int* data;
size_t capacity;
size_t length;
} SequList;
// 初始化顺序列表
void sequList_init(SequList* list);
// 查找元素
int sequList_find(const SequList* list, int target);
// 插入元素
bool sequList_insert(SequList* list, int value);
// 删除元素
bool sequList_remove(SequList* list, int value);
// 遍历列表
void sequList_traverse(const SequList* list);
// 获取实际长度
size_t sequList_length(const SequList* list);
#endif // SEQULIST_H
```
接下来,在`SequList.c`中实现这些函数:
```c
#include "SequList.h"
// 实现细节
void sequList_init(SequList* list) {
list->data = malloc(sizeof(int) * 10); // 初始容量为10
list->capacity = 10;
list->length = 0;
}
int sequList_find(const SequList* list, int target) {
for (size_t i = 0; i < list->length; ++i) {
if (list->data[i] == target)
return i;
}
return -1;
}
bool sequList_insert(SequList* list, int value) {
if (list->length >= list->capacity) {
list->capacity *= 2; // 当满时,容量翻倍
list->data = realloc(list->data, sizeof(int) * list->capacity);
}
list->data[list->length++] = value;
return true;
}
bool sequList_remove(SequList* list, int value) {
for (size_t i = 0; i < list->length; ++i) {
if (list->data[i] == value) {
memmove(&list->data[i], &list->data[i + 1], sizeof(int) * (list->length - i - 1));
list->length--;
if (i < list->length)
return true;
}
}
return false;
}
void sequList_traverse(const SequList* list) {
printf("List elements: ");
for (size_t i = 0; i < list->length; ++i)
printf("%d ", list->data[i]);
printf("\n");
}
size_t sequList_length(const SequList* list) {
return list->length;
}
```
这个例子展示了如何创建一个基础的顺序列表,并提供了基本的操作如初始化、查找、插入、删除和遍历。注意这只是一个简化版本,实际项目中可能会有错误检查和其他优化。
阅读全文