C语言完成顺序表的基本运算:初始化、显示、求长度、判空、判满、插入、删除、按位置取元素、按值查找等,并编写主函数测试算法。
时间: 2024-09-18 11:06:53 浏览: 69
在C语言中,我们可以使用结构体和指针来实现顺序表的数据结构。以下是基本的顺序表操作:
1. 初始化 (Initialization):
```c
typedef struct {
int* data; // 指向整型数据的指针
int size; // 当前数组大小
int capacity; // 预设的最大容量
} List;
List* createList() {
List* list = malloc(sizeof(List));
if (!list) return NULL;
list->data = malloc(capacity * sizeof(int));
list->size = 0;
list->capacity = CAPACITY; // 定义预设容量,如10
return list;
}
```
2. 显示 (Display):
```c
void display(List* list) {
for (int i = 0; i < list->size; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
```
3. 求长度 (Length):
```c
int length(List* list) {
return list->size;
}
```
4. 判空 (Empty check):
```c
int isEmpty(List* list) {
return list->size == 0;
}
```
5. 判满 (Full check):
```c
int isFull(List* list) {
return list->size >= list->capacity;
}
```
6. 插入 (Insertion):
```c
void insert(List* list, int value, int index) {
if (index < 0 || index > list->size) {
printf("Invalid index.\n");
return;
}
if (isFull(list)) resizeList(list); // 动态扩容
memmove(&list->data[index+1], &list->data[index], sizeof(int)*(list->size - index));
list->data[index] = value;
list->size++;
}
```
7. 删除 (Deletion):
```c
void delete(List* list, int index) {
if (isEmpty(list) || index < 0 || index >= list->size) {
printf("Invalid index or empty list.\n");
return;
}
memmove(&list->data[index], &list->data[index+1], sizeof(int)*(list->size - index - 1));
list->size--;
}
```
8. 按位置取元素 (Get element by position):
```c
int get(List* list, int index) {
if (index < 0 || index >= list->size) {
return -1; // 返回错误值
}
return list->data[index];
}
9. 按值查找 (Value search):
```c
int find(List* list, int value) {
for (int i = 0; i < list->size; i++) {
if (list->data[i] == value) {
return i;
}
}
return -1; // 如果未找到,返回-1
}
```
10. 主函数测试:
```c
int main() {
List* list = createList();
// 测试各项操作...
return 0;
}
```
阅读全文