使用C语言,将链表的奇偶项分别拆成两个链表
时间: 2024-12-15 11:12:02 浏览: 18
在C语言中,我们可以创建两个新的链表,一个用于存储原链表的奇数项,另一个用于存储偶数项。下面是一个基本的步骤:
1. 定义两个链表结构体,`odd_list` 和 `even_list`,以及它们各自的头指针。
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
Node* odd_list_head = NULL;
Node* even_list_head = NULL;
```
2. 创建一个辅助函数,遍历原链表。这个函数会接收原链表的头指针作为参数,并在每次迭代中检查当前节点的索引是否为偶数或奇数。
```c
void separateLists(Node* head) {
Node* current = head;
int index = 0;
while (current != NULL) {
if ((index + 1) % 2 == 0) { // 偶数位置
if (even_list_head == NULL) {
even_list_head = current;
} else {
even_list_head->next = current;
}
even_list_head = current;
} else { // 奇数位置
if (odd_list_head == NULL) {
odd_list_head = current;
} else {
odd_list_head->next = current;
}
odd_list_head = current;
}
current = current->next;
index++;
}
}
```
3. 最后,在完成遍历后,别忘了更新`odd_list_head` 和 `even_list_head` 的`next` 指针,使其指向最后一个添加到链表中的节点。
注意:这个函数假设索引从0开始,第一个节点被视为奇数项。如果原始需求有所不同,可以根据实际情况调整判断条件。
阅读全文