C语言实现顺序表链表的创建、插入、删除、输出、求长度、判断是否为空 需要各部分的功能测试截图
时间: 2024-09-27 21:08:26 浏览: 32
数据结构-C语言描述(顺序表、链表)
在C语言中,我们可以使用结构体(struct)和指针来实现顺序表(数组形式)和链表(节点形式)。这里我将简述如何分别实现这两种情况:
**顺序表(数组形式):**
```c
typedef struct {
int data[10]; // 假设大小为10
int length;
} List;
// 创建空列表
List* create_list() {
List* list = (List*)malloc(sizeof(List));
list->length = 0;
return list;
}
// 插入元素
void insert(List* list, int value) {
if (list->length < sizeof(list->data)) {
list->data[list->length] = value;
list->length++;
} else {
printf("Error: List is full.\n");
}
}
// 删除元素
int delete(List* list, int index) {
if (index >= 0 && index < list->length) {
memmove(&list->data[index], &list->data[index + 1], (list->length - index - 1) * sizeof(int));
list->length--;
return list->data[index];
} else {
printf("Error: Index out of range.\n");
return -1;
}
}
// 输出列表
void print_list(List* list) {
for (int i = 0; i < list->length; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
// 求长度
int get_length(List* list) {
return list->length;
}
// 判断是否为空
int is_empty(List* list) {
return list->length == 0;
}
```
**链表(节点形式):**
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建空链表
Node* create_linked_list() {
return NULL;
}
// 在链表尾部插入
void insert_node(Node** head, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = *head;
*head = newNode;
}
// 删除节点(假设有一个指向当前头节点的指针)
void delete_node(Node** head, int value) {
if (*head != NULL) {
if ((*head)->data == value) {
Node* temp = *head;
*head = (*head)->next;
free(temp);
} else {
Node* current = *head;
while (current->next != NULL && current->next->data != value) {
current = current->next;
}
if (current->next != NULL) {
Node* temp = current->next;
current->next = temp->next;
free(temp);
}
}
}
}
// ... 其他函数类似,省略
```
关于功能测试截图,由于这是一个文本环境,无法提供实际截图。你可以编写一些测试代码来验证上述函数的正确性,例如创建一个列表,插入几个元素,然后检查打印、删除、长度和空判断等操作的结果。
阅读全文