1、建立一个顺序表,利用一维数组来存储,含有,个数据元素; 2、输出顺序表; 3、找顺序表中第i个元素并输出,在顺序表中查找e并返回它的位置; 4、完成在第i个元素之前插入数据e的操作: 5、删除顺序表中的第个元素。用c语言编写
时间: 2024-10-17 11:11:22 浏览: 32
在C语言中,我们可以创建一个简单的顺序表结构来满足上述需求。这里是一个基本实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表结构体
typedef struct {
int* data; // 数组存储数据
int size; // 当前元素个数
int capacity; // 容量大小
} SeqList;
// 初始化顺序表
void init(SeqList* list, int capacity) {
list->data = (int*)malloc(capacity * sizeof(int));
list->size = 0;
list->capacity = capacity;
}
// 输出顺序表
void print(SeqList* list) {
if (list->size > 0) {
printf("Sequence List: [");
for (int i = 0; i < list->size; i++) {
printf("%d ", list->data[i]);
}
printf("]\n");
} else {
printf("Sequence List is empty.\n");
}
}
// 查找元素并输出索引
int find_element(SeqList* list, int index, int e) {
if (index >= 0 && index < list->size) {
if (list->data[index] == e)
return index;
}
return -1; // 元素未找到,返回-1
}
// 插入元素
void insert_before(SeqList* list, int index, int e) {
if (index <= list->size) {
if (list->size + 1 >= list->capacity) {
resize_list(list); // 若已满,扩容
}
memmove(&list->data[index+1], &list->data[index], sizeof(int)*(list->size - index)); // 移动元素
list->data[index] = e;
list->size++;
}
}
// 删除元素
void delete_element(SeqList* list, int index) {
if (index >= 0 && index < list->size) {
memmove(&list->data[index], &list->data[index+1], sizeof(int)*(list->size - index - 1)); // 移动元素
list->size--;
}
}
// 动态扩容函数
void resize_list(SeqList* list) {
list->capacity *= 2;
list->data = (int*)realloc(list->data, list->capacity * sizeof(int));
}
int main() {
SeqList list;
init(&list, 5);
// 插入元素示例
insert_before(&list, 0, 10);
insert_before(&list, 2, 20);
// 打印顺序表
print(&list);
// 查找元素并输出索引
int position = find_element(&list, 1, 20);
if (position != -1)
printf("Element 20 found at position %d.\n", position);
// 删除元素
delete_element(&list, 1);
// 再次打印顺序表
print(&list);
return 0;
}
```
阅读全文