C语言顺序表的基本操作代码
时间: 2024-10-11 10:09:35 浏览: 1
在C语言中,由于数组是顺序存储的,基本操作主要包括访问、插入和删除。这里是一个简单的顺序表示例,使用了指针的概念来表示元素的位置:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表节点结构体
typedef struct {
int data; // 数据域
struct Node* next; // 指向下一个节点的指针
} Node;
// 创建顺序表
Node* create_list(int capacity) {
Node* list = (Node*)malloc(capacity * sizeof(Node));
for (int i = 0; i < capacity; i++) {
list[i].data = 0;
list[i].next = NULL;
}
return list;
}
// 插入元素
void insert(Node** head, int index, int value) {
if (index < 0 || index >= (*head)->next != NULL)
printf("Invalid index.\n");
else {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = (*head)->next;
if (index == 0)
(*head)->next = newNode;
else {
Node* temp = (*head);
for (int i = 0; i < index - 1; i++)
temp = temp->next;
temp->next = newNode;
}
}
}
// 删除元素
void delete(Node** head, int index) {
if (index < 0 || index >= (*head)->next != NULL)
printf("Invalid index.\n");
else {
Node* temp = *head;
if (index == 0) {
*head = (*head)->next;
} else {
for (int i = 0; i < index - 1; i++)
temp = temp->next;
temp->next = temp->next->next;
}
free(temp->next); // 释放已删除节点
}
}
// 打印顺序表
void print_list(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
Node* list = create_list(5);
insert(&list, 0, 10);
insert(&list, 2, 20);
print_list(list); // 输出: 10 0 20 0 0
delete(&list, 1);
print_list(list); // 输出: 10 20 0 0 0
return 0;
}
```
这个例子展示了如何创建顺序表,插入元素以及删除元素的一些基本操作。请注意,实际项目中应包含错误检查和内存管理的代码。