判断单链表L(带头节点)是否为递增的 c语言实现
时间: 2024-09-27 13:08:57 浏览: 44
链表-使用C语言实现带头结点的单链表.zip
判断单链表 L 是否为递增顺序可以使用迭代或递归的方式来实现。这里提供一个简单的迭代C语言实现:
```c
#include <stdio.h>
#include <stdbool.h>
typedef struct ListNode {
int val;
struct ListNode* next;
} ListNode;
bool isIncreasing(ListNode* head) {
if (head == NULL || head->next == NULL) { // 链表为空或者只有一个元素,直接返回真
return true;
}
ListNode* current = head;
while (current != NULL && current->next != NULL) {
if (current->val >= current->next->val) { // 如果当前节点值大于等于下一个节点值,则不是递增链表
return false;
}
current = current->next; // 移动到下一个节点
}
return true; // 遍历完未找到非递增情况,说明链表是递增的
}
int main() {
// 示例链表创建和测试
ListNode* list = malloc(sizeof(ListNode));
list->val = 1;
list->next = malloc(sizeof(ListNode));
list->next->val = 2;
list->next->next = malloc(sizeof(ListNode));
list->next->next->val = 3;
if (isIncreasing(list)) {
printf("链表递增。\n");
} else {
printf("链表非递增。\n");
}
return 0;
}
```
阅读全文