C语言实现递增有序链表:插入、遍历与查找
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语言创建递增有序链表,并实现了链表的遍历、顺序查找和元素插入等操作。希望对您有所帮助!
原文地址: https://www.cveoy.top/t/topic/brht 著作权归作者所有。请勿转载和采集!