用 c语言实现以下内容:在main函数中定义一个顺序表实例(变量),并初始化,然后向其中录入10个无序的整数(ElemType为int类型)。
时间: 2024-09-13 12:02:57 浏览: 42
在C语言中,我们可以使用结构体和动态内存分配来实现一个简单的顺序表(数组)。下面是一个示例,展示了如何创建、初始化并添加元素的过程:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表的结构体
typedef struct {
int* data; // 整型数据指针
size_t capacity; // 表的最大容量
size_t size; // 当前元素的数量
} SequenceList;
// 初始化顺序表
void init_list(SequenceList* list) {
list->data = NULL;
list->capacity = 0;
list->size = 0;
}
// 添加元素到列表,如果满则扩容
void add_to_list(SequenceList* list, int value) {
if (list->size == list->capacity) { // 如果已满
list->capacity *= 2; // 扩容一倍
list->data = (int*) realloc(list->data, list->capacity * sizeof(int));
if (!list->data) { // 内存分配失败
printf("Memory allocation failed.\n");
return;
}
}
list->data[list->size] = value; // 插入元素
list->size++;
}
// 主函数
int main() {
SequenceList my_list;
init_list(&my_list);
for (int i = 0; i < 10; i++) {
printf("Enter integer %d: ", i + 1);
int input;
scanf("%d", &input);
add_to_list(&my_list, input); // 录入无序整数
}
printf("The sequence list contains:\n");
for (size_t i = 0; i < my_list.size; i++) {
printf("%d ", my_list.data[i]); // 输出列表内容
}
free(my_list.data); // 释放内存
return 0;
}
```
在这个示例中,我们首先定义了一个`SequenceList`结构,包含指向元素的指针、最大容量和当前大小。然后,我们在`init_list`函数中初始化这个结构,主函数中通过循环录入10个无序整数,并在需要时动态扩容存储。最后记得释放内存以避免内存泄漏。
阅读全文