帮我写一个整数顺序表的表现和实现
时间: 2024-03-11 17:51:23 浏览: 30
整数顺序表是一种线性数据结构,可以用来存储一组整数元素并支持随机访问。下面是整数顺序表的表现和实现:
表现:
- 由一个固定大小的数组来存储整数元素。
- 通过一个整数变量来记录当前表中元素的个数。
- 支持在表尾插入元素、在表头插入元素、在指定位置插入元素、删除指定位置的元素、获取指定位置的元素、修改指定位置的元素等操作。
- 若表满时需要扩容,可以选择重新分配一个更大的数组并将原有元素复制过去。
实现:
```c
#define MAX_SIZE 100 // 表示顺序表的最大容量
typedef struct {
int data[MAX_SIZE]; // 存储元素的数组
int length; // 当前表的长度
} SeqList;
// 初始化顺序表,将长度置为0
void init(SeqList *list) {
list->length = 0;
}
// 在表尾插入元素
void insert(SeqList *list, int value) {
if (list->length >= MAX_SIZE) {
printf("Error: the list is full!\n");
return;
}
list->data[list->length++] = value;
}
// 在指定位置插入元素
void insertAt(SeqList *list, int value, int index) {
if (index < 0 || index > list->length) {
printf("Error: invalid index!\n");
return;
}
if (list->length >= MAX_SIZE) {
printf("Error: the list is full!\n");
return;
}
for (int i = list->length; i > index; i--) {
list->data[i] = list->data[i-1];
}
list->data[index] = value;
list->length++;
}
// 在表头插入元素
void insertFirst(SeqList *list, int value) {
insertAt(list, value, 0);
}
// 删除指定位置的元素
void deleteAt(SeqList *list, int index) {
if (index < 0 || index >= list->length) {
printf("Error: invalid index!\n");
return;
}
for (int i = index; i < list->length-1; i++) {
list->data[i] = list->data[i+1];
}
list->length--;
}
// 获取指定位置的元素
int get(SeqList *list, int index) {
if (index < 0 || index >= list->length) {
printf("Error: invalid index!\n");
return 0;
}
return list->data[index];
}
// 修改指定位置的元素
void set(SeqList *list, int index, int value) {
if (index < 0 || index >= list->length) {
printf("Error: invalid index!\n");
return;
}
list->data[index] = value;
}
```
以上实现代码只是整数顺序表的基础操作,还有一些其他的操作(如排序、查找、去重等)可以根据需要进行扩展。