将顺序表的基本算法(如初始化、求长度、插入、删除、输出等)汇总在一起, 用一个完整的C语言程序实现顺序表的基本运算,并且编写顺序表的判空、判满等基本运算的算法
时间: 2024-09-25 16:05:05 浏览: 45
在C语言中,我们可以创建一个顺序表结构体并实现一些基本操作。这里是一个简单的顺序表结构体定义以及对应的一些基础函数:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表节点结构
typedef struct Node {
int data;
struct Node* next;
} Node;
// 序列表结构体
typedef struct {
Node* head; // 链表头指针
int size; // 当前元素的数量
int capacity; // 表的最大容量
} List;
// 初始化顺序表
List* create_list(int capacity) {
List* list = (List*)malloc(sizeof(List));
if (!list) return NULL;
list->head = NULL;
list->size = 0;
list->capacity = capacity;
return list;
}
// 判空
int is_empty(List* list) {
return list->size == 0;
}
// 判满
int is_full(List* list) {
return list->size == list->capacity;
}
// 求长度
int get_size(List* list) {
return list->size;
}
// 插入元素(在表尾)
void insert(List* list, int value) {
if (is_full(list)) return;
Node* newNode = (Node*)malloc(sizeof(Node));
if (!newNode) return;
newNode->data = value;
newNode->next = NULL;
if (list->size == 0) {
list->head = newNode;
} else {
Node* current = list->head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
list->size++;
}
// 删除元素(根据下标)
void delete(List* list, int index) {
if (index >= list->size || index < 0) return;
if (index == 0) {
list->head = list->head->next;
} else {
Node* current = list->head;
for (int i = 0; i < index - 1; i++) {
current = current->next;
}
current->next = current->next->next;
}
free(list->head);
list->size--;
}
// 输出列表
void print_list(List* list) {
printf("Sequence List:\n");
Node* current = list->head;
while (current != NULL) {
printf("%d -> ", current->data);
current = current->next;
}
printf("\n");
}
int main() {
List* list = create_list(5); // 创建一个容量为5的顺序表
// 使用insert, delete等操作...
print_list(list);
free(list); // 清理内存
return 0;
}
```
阅读全文