建立一个链表,在ab之间插入节点c后删除b节点统计节点个数,C语言
时间: 2024-09-10 09:29:15 浏览: 61
C语言 数据结构之单链表基本操作
在C语言中,你可以通过以下几个步骤建立链表并在ab之间插入节点c,并在删除节点b后统计剩余节点的数量:
1. **创建链表结构**:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
2. **初始化链表和插入操作**:
- 创建头节点
- 插入节点c (在a之后):
```c
Node* insertAfter(Node* a, int c) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = c;
newNode->next = a->next;
a->next = newNode;
}
```
- 删除节点b (如果存在):
```c
void deleteNode(Node** head, int key) {
if (*head == NULL || (*head)->data != key)
return;
Node* temp = *head;
*head = (*head)->next;
free(temp);
}
```
3. **在ab之间插入c并删除b后统计节点数**:
```c
int countNodes(Node* head) {
int count = 0;
while (head != NULL) {
count++;
head = head->next;
}
return count;
}
int main() {
// 初始化链表
Node* list = createList(); // 假设createList函数用于创建初始链表
// 插入节点c
insertAfter(list, 5); // 假设a的数据是5
// 删除节点b (这里假设b是存在的)
deleteNode(&list, 4); // 如果b的数据是4
// 统计节点个数
int nodeCount = countNodes(list);
printf("After insertion and deletion: %d nodes.\n", nodeCount);
return 0;
}
```
**注意**: 上述代码中的一些函数(如`createList`, `insertAfter`, 和 `deleteNode`) 需你自己实现。`createList` 函数用于创建一个包含元素的链表,`insertAfter` 和 `deleteNode` 分别用于在指定位置插入新节点和删除特定节点。
阅读全文