C语言实现递增有序链表:插入、遍历与查找

本文将介绍如何使用C语言创建递增有序链表,并实现链表的遍历、顺序查找和元素插入等操作。

1. 链表节点结构体

首先,我们需要定义一个结构体来表示链表的节点:ctypedef struct Node { int data; struct Node *next;} Node;

每个节点包含两个成员:

  • data:存储整型数据。- next:指向下一个节点的指针,如果节点为最后一个节点,则指向NULL。

2. 创建递增有序链表

以下代码演示了如何从键盘输入一组整型元素序列,并创建递增有序链表:cNode* createSortedLinkedList() { Node *head = NULL, *temp, *prev; int num;

printf('请输入一组递增的整数,以空格分隔,以-1结束: ');

while (1) { scanf('%d', &num); if (num == -1) break;

temp = (Node*)malloc(sizeof(Node));    temp->data = num;    temp->next = NULL;

if (head == NULL) {      head = temp;    } else if (head->data > num) {      temp->next = head;      head = temp;    } else {      prev = head;      while (prev->next != NULL && prev->next->data < num) {        prev = prev->next;      }      temp->next = prev->next;      prev->next = temp;    }  }

return head;}

该函数首先创建一个空链表,然后循环读取用户输入的整数,直到读取到-1为止。对于每个输入的整数,函数会创建一个新的节点,并将其插入到链表中,保证链表始终保持递增有序。

3. 遍历链表

以下代码演示了如何遍历链表并打印每个节点的数据:cvoid traverseLinkedList(Node *head) { Node *current = head;

printf('链表元素为:'); while (current != NULL) { printf('%d ', current->data); current = current->next; } printf(' ');}

4. 顺序查找元素

以下代码演示了如何在链表中进行顺序查找:cint searchLinkedList(Node *head, int x) { Node *current = head;

while (current != NULL) { if (current->data == x) { return 1; } current = current->next; }

return 0;}

5. 插入元素到递增有序链表

以下代码演示了如何在递增有序链表中插入新元素,并保持链表的有序性:cNode* insertLinkedList(Node *head, int x) { Node newNode = (Node)malloc(sizeof(Node)); newNode->data = x; newNode->next = NULL;

if (head == NULL || head->data >= x) { newNode->next = head; head = newNode; } else { Node *current = head; while (current->next != NULL && current->next->data < x) { current = current->next; } newNode->next = current->next; current->next = newNode; }

return head;}

6. 完整代码示例c#include <stdio.h>#include <stdlib.h>

typedef struct Node { int data; struct Node *next;} Node;

// ... 上述函数代码 ...

int main() { Node *head = createSortedLinkedList(); traverseLinkedList(head);

int x; printf('请输入要查找的元素:'); scanf('%d', &x);

if (searchLinkedList(head, x)) { printf('元素 %d 在链表中 ', x); } else { printf('元素 %d 不在链表中 ', x); }

printf('请输入要插入的元素:'); scanf('%d', &x);

head = insertLinkedList(head, x); traverseLinkedList(head);

return 0;}

总结

本文介绍了如何使用C语言创建递增有序链表,并实现了链表的遍历、顺序查找和元素插入等操作。希望对您有所帮助!

C语言实现递增有序链表:插入、遍历与查找

原文地址: https://www.cveoy.top/t/topic/brht 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录