用C语言写个递增有序表
时间: 2024-09-21 21:09:31 浏览: 40
在C语言中,你可以创建一个递增有序表(也称为链表)来存储一系列按升序排列的元素。这里是一个简单的单向链表结构示例,包含节点数据和指向下一个节点的指针:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构
typedef struct Node {
int data; // 节点数据
struct Node* next; // 指向下一个节点的指针
} Node;
// 创建新节点并分配内存
Node* createNode(int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode != NULL) {
newNode->data = value;
newNode->next = NULL;
return newNode;
}
printf("Memory allocation failed.\n");
return NULL;
}
// 插入节点保持递增顺序
void insertSorted(Node** head, int value) {
Node* newNode = createNode(value);
if (*head == NULL || value < (*head)->data) {
*head = newNode;
} else {
Node* current = *head;
while (current->next != NULL && value > current->next->data) {
current = current->next;
}
newNode->next = current->next;
current->next = newNode;
}
}
// 打印链表
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
int main() {
Node* sortedList = NULL; // 初始化链表头
// 插入一些数字
insertSorted(&sortedList, 5); // 5
insertSorted(&sortedList, 2); // 2
insertSorted(&sortedList, 9); // 9
insertSorted(&sortedList, 1); // 1
insertSorted(&sortedList, 7); // 7
insertSorted(&sortedList, 6); // 6
// 打印排序后的链表
printList(sortedList);
return 0;
}
```
在这个例子中,我们首先定义了一个链表节点结构,然后实现了一个函数来插入新的值并保持链表的递增顺序。`insertSorted`函数遍历链表找到合适的位置插入新值。最后,`main`函数展示了如何使用这些函数。
阅读全文