1、创建顺序表结构体用于保存整型的数据元素 2、创建以下函数,分别实现顺序表的初始化、插入、删除、查找和显示功能 3、创建主函数调用以上函数,验证其正确性
时间: 2024-09-11 12:13:06 浏览: 58
C++实现顺序表的常用操作(插入删出查找输出)
5星 · 资源好评率100%
首先,我们可以创建一个简单的顺序表结构体,用于存储整数数据。这个结构体会包含一个数组来存放数据,以及两个变量,一个表示当前元素的数量,另一个表示数组的最大容量:
```c++
#include <stdbool.h>
typedef struct {
int* data; // 整型数据元素数组
int size; // 当前元素数量
int capacity; // 数组最大容量
} SequenceList;
// 初始化顺序表
void initList(SequenceList* list) {
list->data = NULL;
list->size = 0;
list->capacity = 0;
}
// 插入元素
bool insertElement(SequenceList* list, int value) {
if (list->size == list->capacity) {
// 扩容
list->capacity *= 2;
list->data = realloc(list->data, sizeof(int) * list->capacity);
if (!list->data) return false; // 内存分配失败
}
list->data[list->size++] = value;
return true;
}
// 删除元素
int deleteElement(SequenceList* list, int index) {
if (index >= 0 && index < list->size) {
int value = list->data[index];
for (int i = index; i < list->size - 1; ++i) {
list->data[i] = list->data[i + 1];
}
--list->size;
if (list->size < list->capacity / 4) { // 缩容
free(list->data + list->size);
list->capacity /= 2;
list->data = realloc(list->data, sizeof(int) * list->capacity);
}
return value; // 返回删除的元素值
}
return -1; // 元素不存在
}
// 查找元素
int searchElement(const SequenceList* list, int target) const {
for (int i = 0; i < list->size; ++i) {
if (list->data[i] == target) return i;
}
return -1; // 元素未找到
}
// 显示列表
void displayList(const SequenceList* list) {
printf("顺序表内容: ");
for (int i = 0; i < list->size; ++i) {
printf("%d ", list->data[i]);
}
printf("\n");
}
// 主函数测试
int main() {
SequenceList myList;
initList(&myList);
// 测试插入、删除、查找和显示
insertElement(&myList, 5);
insertElement(&myList, 10);
displayList(&myList); // 应该显示 "顺序表内容: 5 10"
int foundIndex = searchElement(&myList, 10);
assert(foundIndex != -1); // 检查查找是否成功
deleteElement(&myList, foundIndex); // 删除10
displayList(&myList); // 应该显示 "顺序表内容: 5"
return 0;
}
```
上述代码展示了如何创建一个顺序表并实现了所需的功能。请注意,这里使用了 C 语言标准库的 `malloc` 和 `realloc` 函数进行内存管理,实际项目中应考虑使用更现代的内存管理方式。
阅读全文