根据教材c语言版数据结构解决问题顺序表的建立及遍历 读入n值及n个整数,建立顺序表并遍历输出。
时间: 2024-10-17 12:12:56 浏览: 35
在C语言中,你可以按照下面的步骤解决这个问题,首先创建一个顺序表,然后输入n个整数并将其添加到表中,最后遍历并打印出来。
**1. 创建顺序表结构**:
定义一个顺序表结构,包含一个数组用于存储整数,以及两个变量记录当前元素的数量(size)和数组的容量(capacity)。
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int* data;
int size;
int capacity;
} SeqList;
SeqList* create_list() {
SeqList* list = malloc(sizeof(SeqList));
list->data = NULL;
list->size = 0;
list->capacity = 5; // 初始容量设为5
return list;
}
void initialize_list(SeqList* list) {
list->data = malloc(list->capacity * sizeof(int)); // 分配初始内存
}
```
**2. 输入并添加元素**:
编写函数读取n值和n个整数,然后添加到顺序表中。
```c
void input_and_add(SeqList* list, int n) {
initialize_list(list); // 初始化数组
for (int i = 0; i < n; i++) {
int num;
scanf("%d", &num);
list->data[list->size++] = num; // 将元素追加到表尾
if (list->size == list->capacity) {
// 满了扩容
list->capacity *= 2;
list->data = realloc(list->data, list->capacity * sizeof(int));
}
}
}
```
**3. 遍历顺序表**:
创建一个函数来遍历并打印顺序表的内容。
```c
void print_list(SeqList* list) {
for (int i = 0; i < list->size; i++) {
printf("%d ", list->data[i]); // 输出元素
}
printf("\n");
}
```
**完整示例**:
```c
int main() {
SeqList* list = create_list();
int n;
printf("Enter the number of integers to be stored: ");
scanf("%d", &n);
input_and_add(list, n);
print_list(list);
free(list->data);
free(list);
return 0;
}
```
阅读全文