用C语言编写一串代码,判断头结点链表的数是否全部为奇数
时间: 2023-05-28 16:03:45 浏览: 74
假设头结点链表的定义如下:
```
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
```
则可以使用以下代码判断头结点链表的数是否全部为奇数:
```
int isAllOdd(ListNode *head) {
ListNode *p = head;
while (p != NULL) {
if (p->val % 2 == 0) {
return 0; // 有偶数则返回0
}
p = p->next;
}
return 1; // 全部为奇数则返回1
}
```
代码的逻辑很简单,就是从头结点开始遍历链表,如果发现有偶数则返回0,否则遍历完链表后返回1。
相关问题
用c语言编写一串代码,判断头结点单链表是否全为偶数或者全为奇数
```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;
}
```
阅读全文