用c语言完成以下任务:输入n个整数,建立n个元素的顺序表,然后打印出来。要求把顺序表的存储结构定义成一个结构体,至少包括一个数组(固定长或不固定长都行)存放数据,至少定义一个变量指示哪些位置存放了元素
时间: 2024-10-07 20:04:40 浏览: 38
在C语言中,你可以创建一个名为`SequentialList`的结构体来表示顺序表,并包含一个动态大小的数组用于存储整数。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表结构体
typedef struct {
int* elements; // 存储整数的数组
size_t capacity; // 当前数组容量
size_t size; // 数组实际元素的数量
} SequentialList;
// 动态分配空间并初始化顺序表
void init_list(SequentialList* list, size_t n) {
if (list == NULL) return;
list->elements = malloc(n * sizeof(int));
list->capacity = n;
list->size = 0;
}
// 向列表中添加元素
void add_element(SequentialList* list, int num) {
if (list->size == list->capacity) {
list->capacity *= 2; // 如果满了,扩大一倍容量
list->elements = realloc(list->elements, list->capacity * sizeof(int));
}
list->elements[list->size++] = num;
}
// 打印顺序表
void print_list(const SequentialList* list) {
for (size_t i = 0; i < list->size; i++) {
printf("%d ", list->elements[i]);
}
printf("\n");
}
int main() {
SequentialList myList;
int n;
printf("Enter the number of integers to input: ");
scanf("%d", &n);
init_list(&myList, n); // 初始化顺序表
for (int i = 0; i < n; i++) {
int num;
printf("Enter integer %d: ", i + 1);
scanf("%d", &num);
add_element(&myList, num);
}
print_list(&myList); // 打印顺序表
free(myList.elements); // 清理内存
return 0;
}
```
在这个程序中,我们首先定义了一个`SequentialList`结构,包含了指向元素的指针、当前容量以及元素数量。`init_list`函数初始化列表,`add_element`用于添加新的元素,而`print_list`则用于显示所有元素。
在`main`函数里,用户会被提示输入整数,并通过`add_element`将它们添加到列表中,最后打印出整个列表。
阅读全文