用c语言写出一个正确简单易懂的代码判断单链表是否递增有序
时间: 2024-10-11 14:09:26 浏览: 30
当然可以,这里是一个简单的 C 语言函数,用于判断单链表是否递增有序:
```c
#include <stdio.h>
#include <stdbool.h>
// 定义链表节点结构体
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
// 判断链表是否递增有序
bool isSorted(ListNode* head) {
if (head == NULL || head->next == NULL) { // 如果链表为空或只有一个元素,直接认为是递增有序
return true;
}
ListNode *current = head;
while (current->next != NULL) {
if (current->val >= current->next->val) { // 检查当前节点的值是否小于等于下一个节点的值
current = current->next; // 如果满足条件,继续检查下一对节点
} else {
return false; // 找到第一个不满足递增顺序的节点,返回false
}
}
return true; // 遍历结束,链表可能是空或最后一个节点大于所有后续节点,视为递增有序
}
// 测试函数
int main() {
// 创建一个例子链表:1 -> 2 -> 3 -> 4
ListNode *list = malloc(sizeof(ListNode));
list->val = 1;
ListNode *node2 = malloc(sizeof(ListNode));
node2->val = 2;
list->next = node2;
node2->next = malloc(sizeof(ListNode));
node2->next->val = 3;
node2->next->next = malloc(sizeof(ListNode));
node2->next->next->val = 4;
node2->next->next->next = NULL;
if (isSorted(list)) {
printf("链表递增有序\n");
} else {
printf("链表不是递增有序\n");
}
return 0;
}
```
阅读全文