要闻:C语言实现单链表-增删改查

来源:DS小龙哥-嵌入式技术 2023-05-25 18:31:10


(相关资料图)

链表是由一连串节点组成的数据结构,每个节点包含一个数据值和一个指向下一个节点的指针。链表可以在头部和尾部插入和删除节点,因此可以在任何地方插入和删除节点,从而使其变得灵活和易于实现。

链表通常用于实现有序集合,例如队列和双向链表。链表的优点是可以快速随机访问节点,而缺点是插入和删除操作相对慢一些,因为需要移动节点。此外,链表的长度通常受限于内存空间,因此当链表变得很长时,可能需要通过分页或链表分段等方式来管理其内存。

下面是一套封装好的单链表框架,包括创建链表、插入节点、删除节点、修改节点、遍历节点和清空链表等常见操作,其中每个节点存储一个结构体变量,该结构体中包含一个名为data的int类型成员。

#include  #include  ​ // 链表节点结构体 typedef struct ListNode {     int data;                   // 节点数据     struct ListNode *next;      // 下一个节点的指针 } ListNode; ​ // 创建一个新节点 ListNode *createNode(int data) {     ListNode *node = (ListNode*) malloc(sizeof(ListNode));     node->data = data;     node->next = NULL;     return node; } ​ // 在链表头部插入一个新节点 ListNode *insertNodeAtHead(ListNode *head, int data) {     ListNode *node = createNode(data);     node->next = head;     return node; } ​ // 在链表尾部插入一个新节点 ListNode *insertNodeAtTail(ListNode *head, int data) {     ListNode *node = createNode(data);     if(head == NULL) {         return node;     } else {         ListNode *current = head;         while(current->next != NULL) {             current = current->next;         }         current->next = node;         return head;     } } ​ // 删除链表中第一个值为data的节点 ListNode *deleteNode(ListNode *head, int data) {     if(head == NULL) {         return NULL;     }     if(head->data == data) {         ListNode *current = head;         head = head->next;         free(current);         return head;     }     ListNode *current = head;     while(current->next != NULL && current->next->data != data) {         current = current->next;     }     if(current->next != NULL) {         ListNode *deleteNode = current->next;         current->next = deleteNode->next;         free(deleteNode);     }     return head; } ​ // 修改链表中第一个值为oldData的节点的数据为newData void updateNode(ListNode *head, int oldData, int newData) {     ListNode *current = head;     while(current != NULL) {         if(current->data == oldData) {             current->data = newData;             break;         } else {             current = current->next;         }     } } ​ // 遍历链表 void traverseList(ListNode *head) {     ListNode *current = head;     while(current != NULL) {         printf("%d ", current->data);         current = current->next;     }     printf(""); } ​ // 清空链表,释放所有节点的内存空间 void clearList(ListNode *head) {     while(head != NULL) {         ListNode *current = head;         head = head->next;         free(current);     } } ​ // 示例程序 int main() {     ListNode *head = NULL;     head = insertNodeAtHead(head, 1);     head = insertNodeAtHead(head, 2);     head = insertNodeAtTail(head, 3);     traverseList(head);     head = deleteNode(head, 2);     traverseList(head);     updateNode(head, 1, 4);     traverseList(head);     clearList(head);     return 0; }

在上述代码中,定义了一个节点结构体ListNode,其中包含一个int类型的data成员和一个指向下一个节点的指针。接着定义了用于创建新节点、插入节点、删除节点、修改节点、遍历节点和清空链表等操作的子函数,并在main函数中演示了这些操作的使用例子。在使用完链表后一定要调用clearList函数释放内存空间。

审核编辑:汤梓红

上一篇:中国海诚(002116):5月25日技术指标出现观望信号-“黑三兵” 当前独家 下一篇:最后一页
精彩推荐

要闻:C语言实现单链表-增删改查

2023-05-25

汉字找茬王厣找出18个字通关攻略指南 环球速讯

2023-05-25

中国海诚(002116):5月25日技术指标出现观望信号-“黑三兵” 当前独家

2023-05-25

奔腾T90:国民SUV,精准拿捏用车需求 即时看

2023-05-25

粤万年青董秘回复:公司一直在积极推进相关项目的进展工作,但因其仍存在不确定性

2023-05-25

24节气春分是什么意思(春分是什么意思) 微头条

2023-05-25

孩子“小升初”在即却没有户口,夫妻晚上 6 点“冲进”派出所

2023-05-25

塑料都是绝缘体吗(塑料为什么是绝缘体)

2023-05-25

每日热闻!AI前哨|ChatGPT捧红OpenAI创始人:追随者仰慕 抗议者怒斥其诈骗

2023-05-25

空之要塞启航乌鸦值得培养吗

2023-05-25

全球快消息!美华新材年处理7万吨废旧锂电池材料综合回收利用项目开工

2023-05-25

titanium是什么材料_titanium dioxide_当前速讯

2023-05-25

煮蛋器投手配方在哪里得_煮蛋器投手

2023-05-25

天天日报丨6-3,6-3!商竣程横扫罗马大师赛黑马,距离法网正赛仅一步之遥

2023-05-25

机构观点2023年05月25日

2023-05-25

当前速讯:今年,担心的还是发生了!

2023-05-25

全球最新:助力电竞英雄,AutoFull傲风成为“亚运征途”赛事特约合作伙伴

2023-05-25

每日聚焦:台湾姑娘当汉语老师教口译

2023-05-25

为了找到走丢的狗,“女菩萨”拍起了公益擦边视频

2023-05-25

环球关注:马龙0-4惨败被质疑打假球!

2023-05-25
相关推荐

要闻:C语言实现单链表-增删改查

2023-05-25

中国海诚(002116):5月25日技术指标出现观望信号-“黑三兵” 当前独家

2023-05-25

粤万年青董秘回复:公司一直在积极推进相关项目的进展工作,但因其仍存在不确定性

2023-05-25

塑料都是绝缘体吗(塑料为什么是绝缘体)

2023-05-25

空之要塞启航乌鸦值得培养吗

2023-05-25

titanium是什么材料_titanium dioxide_当前速讯

2023-05-25

机构观点2023年05月25日

2023-05-25

当前速讯:今年,担心的还是发生了!

2023-05-25

每日聚焦:台湾姑娘当汉语老师教口译

2023-05-25

环球关注:马龙0-4惨败被质疑打假球!

2023-05-25