用c语言编写一串代码,判断头结点单链表是否全为偶数或者全为奇数
时间: 2023-05-28 22:03:52 浏览: 86
88.cpp,设计算法判断单循环链表是否每个结点的值都是偶数
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
int isOddOrEven(Node *head) {
if (head == NULL) { // 如果头结点为空,则链表为空,返回-1
return -1;
}
int isOdd = head->data % 2; // 判断头结点的奇偶性
Node *p = head->next; // 从第二个节点开始遍历
while (p != NULL) {
if (p->data % 2 != isOdd) { // 如果不与头结点奇偶性相同,则不全为奇数或偶数
return 0;
}
p = p->next;
}
return 1;
}
int main() {
Node *head = (Node *)malloc(sizeof(Node)); // 创建头结点
head->data = 1;
head->next = NULL;
Node *p = head;
for (int i = 2; i <= 10; i++) { // 创建一个全为偶数的链表
Node *node = (Node *)malloc(sizeof(Node));
node->data = i * 2;
node->next = NULL;
p->next = node;
p = node;
}
int result = isOddOrEven(head);
if (result == -1) {
printf("链表为空\n");
} else if (result == 0) {
printf("链表不全为奇数或偶数\n");
} else {
if (head->data % 2 == 0) {
printf("链表全为偶数\n");
} else {
printf("链表全为奇数\n");
}
}
return 0;
}
```
阅读全文