用c语言实现有序单链表
时间: 2024-09-25 13:16:18 浏览: 35
在C语言中,我们可以使用结构体定义一个节点,并通过指针连接形成有序链表。这里是一个简单的实现,包括链表的创建、插入元素以及查找功能:
```c
// 定义链表节点结构
typedef struct ListNode {
int val; // 节点值
struct ListNode *next; // 指向下一个节点的指针
} ListNode;
// 创建一个新的链表头节点
ListNode* createList() {
ListNode *head = (ListNode*)malloc(sizeof(ListNode));
head->val = -1; // 初始化为空
head->next = NULL;
return head;
}
// 插入元素保持链表有序
void insertSorted(ListNode **head, int val) {
ListNode *newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->val = val;
newNode->next = NULL;
if (*head == NULL || val < (*head)->val) {
newNode->next = *head;
*head = newNode;
} else {
ListNode *current = *head;
while (current->next != NULL && current->next->val > val) {
current = current->next;
}
newNode->next = current->next;
current->next = newNode;
}
}
// 查找特定值
ListNode* searchsorted(ListNode *head, int val) {
ListNode *current = head;
while (current != NULL && current->val != val) {
current = current->next;
}
return current;
}
// 打印链表
void printList(ListNode *head) {
ListNode *temp = head;
while (temp != NULL) {
printf("%d -> ", temp->val);
temp = temp->next;
}
printf("NULL\n");
}
阅读全文