设计算法判断非空链表是否递增有序c语言
时间: 2023-10-08 08:02:46 浏览: 142
这里给出一种使用C语言实现的算法,来判断一个非空链表是否递增有序。
1. 首先,定义一个链表节点的结构体,包含一个数据元素和一个指向下一个节点的指针。
```
struct ListNode {
int val;
struct ListNode *next;
};
```
2. 实现一个函数来判断链表是否递增有序。
```
bool isIncreasing(struct ListNode* head) {
if (head == NULL || head->next == NULL) {
return true;
}
struct ListNode* curr = head;
while (curr->next != NULL) {
if (curr->val >= curr->next->val) {
return false;
}
curr = curr->next;
}
return true;
}
```
3. 在主函数中创建一个链表,并调用判断函数进行测试。
```
int main() {
struct ListNode* head = malloc(sizeof(struct ListNode));
head->val = 1;
struct ListNode* node1 = malloc(sizeof(struct ListNode));
node1->val = 2;
struct ListNode* node2 = malloc(sizeof(struct ListNode));
node2->val = 3;
head->next = node1;
node1->next = node2;
node2->next = NULL;
bool result = isIncreasing(head);
printf("The list is%s increasing.\n", result ? "" : " not");
// 释放内存
free(node2);
free(node1);
free(head);
return 0;
}
```
以上算法通过遍历链表的每个节点,检查当前节点的值是否小于下一个节点的值,如果不是,则返回false;如果链表遍历完毕都没有发现逆序的情况,则返回true,表示链表是递增有序的。
注意,在使用完链表后,要记得释放内存,防止内存泄漏。
阅读全文