c语言利用数组建立顺序表实现任意节点的插入和删除输出顺序表中的所有元素
时间: 2024-10-16 20:03:00 浏览: 38
C语言实现顺序表代码.rar
5星 · 资源好评率100%
在C语言中,我们可以使用数组来实现简单的顺序表数据结构,用于存储一系列相同类型的元素。以下是创建顺序表并支持插入、删除以及遍历操作的基本步骤:
1. 定义顺序表结构体(Node),包含数据域(data)和指向下一个节点的指针(next):
```c
typedef struct Node {
int data; // 数据域
struct Node* next; // 指向下一个节点的指针
} Node;
```
2. 创建顺序表(List)的数据结构,通常是一个指向第一个节点的指针:
```c
typedef struct List {
Node* head; // 指向列表头部的指针
int size; // 当前列表大小
} List;
```
3. 初始化顺序表:
```c
void init_list(List* list) {
list->head = NULL;
list->size = 0;
}
```
4. 插入节点:
- 在表头插入:
```c
void insert_at_start(List* list, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = list->head;
list->head = newNode;
list->size++;
}
```
- 在指定位置插入(如果提供索引):
```c
void insert_at_index(List* list, int index, int value) {
if (index < 0 || index > list->size) return; // 防止越界
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = list->head;
for (int i = 0; i < index; i++) {
list->head = list->head->next;
}
list->head->next = newNode;
list->size++;
}
```
5. 删除节点:
- 删除表头节点:
```c
void delete_head(List* list) {
if (list->head == NULL) return;
Node* temp = list->head;
list->head = list->head->next;
free(temp);
list->size--;
}
```
- 删除特定位置的节点:
```c
void delete_at_index(List* list, int index) {
if (index < 0 || index >= list->size) return;
if (index == 0) {
delete_head(list);
} else {
Node* curr = list->head;
for (int i = 0; i < index - 1; i++) {
curr = curr->next;
}
curr->next = curr->next->next;
free(curr->next);
list->size--;
}
}
```
6. 输出顺序表中的所有元素:
```c
void print_list(List* list) {
Node* temp = list->head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
```
阅读全文