奇偶链表用c语言表示
时间: 2024-03-13 18:38:43 浏览: 11
以下是用C语言表示奇偶链表的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* oddEvenList(struct ListNode* head) {
if (head == NULL) {
return NULL;
}
struct ListNode *odd = head; // 奇数节点链表的头指针
struct ListNode *even = head->next; // 偶数节点链表的头指针
struct ListNode *evenHead = even; // 偶数节点链表的尾指针
while (even != NULL && even->next != NULL) {
odd->next = even->next;
odd = odd->next;
even->next = odd->next;
even = even->next;
}
odd->next = evenHead;
return head;
}
int main() {
// 创建链表 1->2->3->4->5->NULL
struct ListNode *head = (struct ListNode*)malloc(sizeof(struct ListNode));
head->val = 1;
head->next = (struct ListNode*)malloc(sizeof(struct ListNode));
head->next->val = 2;
head->next->next = (struct ListNode*)malloc(sizeof(struct ListNode));
head->next->next->val = 3;
head->next->next->next = (struct ListNode*)malloc(sizeof(struct ListNode));
head->next->next->next->val = 4;
head->next->next->next->next = (struct ListNode*)malloc(sizeof(struct ListNode));
head->next->next->next->next->val = 5;
head->next->next->next->next->next = NULL;
// 调用奇偶链表函数
struct ListNode *result = oddEvenList(head);
// 输出结果
while (result != NULL) {
printf("%d->", result->val);
result = result->next;
}
printf("NULL\n");
return 0;
}
```