c语言建立一个含有n个元素的顺序表,元素可以为整形,浮点型,也可以是结构体类型,选其中一种。
时间: 2023-08-09 20:09:31 浏览: 90
假设我们选用整形作为顺序表的元素类型,以下是在 C 语言中建立一个含有 n 个元素的顺序表的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 定义顺序表的最大容量为 100
typedef struct {
int* data; // 存储顺序表元素的数组指针
int length; // 当前顺序表的长度
int size; // 当前顺序表的容量
} SeqList;
void initList(SeqList* list, int n) {
list->data = (int*)malloc(sizeof(int) * MAX_SIZE);
list->length = 0;
list->size = n;
}
void insert(SeqList* list, int index, int value) {
if (index < 0 || index > list->length || list->length == list->size) {
printf("插入位置不合法或者顺序表已满!\n");
return;
}
for (int i = list->length; i > index; i--) {
list->data[i] = list->data[i - 1];
}
list->data[index] = value;
list->length++;
}
void delete(SeqList* list, int index) {
if (index < 0 || index >= list->length) {
printf("删除位置不合法!\n");
return;
}
for (int i = index; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->length--;
}
int main() {
int n;
printf("请输入顺序表的长度:");
scanf("%d", &n);
SeqList list;
initList(&list, n);
printf("请输入 %d 个整数作为顺序表的元素:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &list.data[i]);
list.length++;
}
printf("顺序表的元素为:");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
return 0;
}
```
在这个例子中,我们使用了动态内存分配来为顺序表分配存储空间。具体来说,在 `initList` 函数中,我们使用了 `malloc` 函数分配了一个大小为 `sizeof(int) * MAX_SIZE` 的内存块,并将其指针赋值给了 `list->data`。同时,我们将顺序表的长度 `list->length` 初始化为 0,容量 `list->size` 初始化为 n。
接下来,我们定义了 `insert` 和 `delete` 函数来实现向顺序表中插入元素和删除元素的操作。这两个函数的具体实现可以参考代码中的注释。
在主函数中,我们首先读入顺序表的长度 n,并调用 `initList` 函数初始化顺序表。接着,我们依次读入 n 个整数作为顺序表的元素,并将它们存储到 `list->data` 数组中。最后,我们遍历 `list->data` 数组,输出顺序表的所有元素。
需要注意的是,在实际应用中,我们可能需要对顺序表的插入、删除等操作进行更多的优化,以提高顺序表的效率。此外,如果需要在顺序表中存储其他类型的元素,只需要将 `int` 替换成相应的类型即可。
阅读全文