用c语言完成一段代码 要求有输入和输出 判断一个单链表中各个结点值是否有序
以下是用C语言实现判断一个单链表中各个结点值是否有序的代码,包含输入和输出:
#include <stdio.h>
#include <stdlib.h>
// 定义单链表结构体
typedef struct Node {
int data;
struct Node *next;
} Node, *LinkedList;
// 创建单链表
LinkedList createLinkedList(int arr[], int n) {
LinkedList head = (LinkedList)malloc(sizeof(Node));
head->next = NULL;
Node *p;
for (int i = 0; i < n; i++) {
p = (Node *)malloc(sizeof(Node));
p->data = arr[i];
p->next = head->next;
head->next = p;
}
return head;
}
// 判断单链表是否有序
int isLinkedListSorted(LinkedList head) {
Node *p = head->next;
if (p == NULL || p->next == NULL) {
return 1;
}
int flag = 1;
while (p->next != NULL) {
if (p->data > p->next->data) {
flag = 0;
break;
}
p = p->next;
}
return flag;
}
// 输出单链表
void printLinkedList(LinkedList head) {
Node *p = head->next;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
LinkedList head = createLinkedList(arr, n);
printf("原始单链表:");
printLinkedList(head);
if (isLinkedListSorted(head)) {
printf("单链表有序\n");
} else {
printf("单链表无序\n");
}
return 0;
}
运行结果:
原始单链表:5 4 3 2 1
单链表无序
``
原文地址: http://www.cveoy.top/t/topic/fblN 著作权归作者所有。请勿转载和采集!