分享好友 维修知识首页 维修知识分类 切换频道

吉日象官网 www.jirixiang.com

c语言单向链表怎么反转

2024-11-082200

要反转一个单向链表,可以使用三个指针分别指向当前节点、前一个节点和后一个节点。然后,通过修改指针的指向来实现链表的反转。

具体步骤如下:

初始化三个指针:当前节点指针cur指向链表的头节点,前一个节点指针prev为NULL,后一个节点指针next为NULL。遍历链表,直到当前节点指针cur为NULL。在遍历过程中,先将后一个节点指针next指向当前节点cur的下一个节点。然后将当前节点指针cur的下一个节点指向前一个节点prev。然后将前一个节点指针prev指向当前节点指针cur。最后将当前节点指针cur指向后一个节点指针next。重复步骤2-6,直到遍历完整个链表。最后,将链表的头节点指针指向前一个节点指针prev,即可完成链表的反转。

下面是一个示例代码实现:

#include<stdio.h>#include<stdlib.h>// 定义链表节点结构体struct Node {    int data;    struct Node* next;};// 反转链表函数struct Node* reverseLinkedList(struct Node* head) {    struct Node* cur = head;    struct Node* prev = NULL;    struct Node* next = NULL;    while (cur != NULL) {        next = cur->next; // 暂存当前节点的下一个节点        cur->next = prev; // 将当前节点的下一个节点指向前一个节点,实现翻转        prev = cur; // 前一个节点指针后移        cur = next; // 当前节点指针后移    }    head = prev; // 将链表头节点指向翻转后的链表的头节点    return head;}// 打印链表函数void printLinkedList(struct Node* head) {    struct Node* cur = head;    while (cur != NULL) {        printf("%d ", cur->data);        cur = cur->next;    }    printf("\n");}int main() {    // 创建链表    struct Node* head = (struct Node*)malloc(sizeof(struct Node));    struct Node* second = (struct Node*)malloc(sizeof(struct Node));    struct Node* third = (struct Node*)malloc(sizeof(struct Node));    head->data = 1;    head->next = second;    second->data = 2;    second->next = third;    third->data = 3;    third->next = NULL;    printf("原始链表:");    printLinkedList(head);    // 反转链表    head = reverseLinkedList(head);    printf("反转后的链表:");    printLinkedList(head);    // 释放内存    free(head);    free(second);    free(third);    return 0;}

以上代码创建了一个包含3个节点的链表,然后调用reverseLinkedList函数来反转链表,并使用printLinkedList函数打印结果。最后释放动态分配的内存。

输出结果如下:

原始链表:1 2 3 反转后的链表:3 2 1 

举报
打赏
网站开启SSI/宝塔面板开启SSI功能/linux面板nginx开启ssi
宝塔开启ssi (宝塔linux面板开启ssi)步骤如下:点击需要设置的网站点击配置文件代码如下#开启ssissi on;ssi_silent_errors on;以

0评论2024-12-072

帝国CMS7.5七合一安装说明!
帝国CMS7.5七合一/新华字典,在线字典,成语大全,古诗大全,诗词名句,古诗词曲,古代典籍安装说明!运行环境:PHP 5.6 mysql 5.7在本

0评论2024-12-077

WWW.YIHUBAIYING.COM 一呼百应
一呼百应 (www.yihubaiying.com):一呼百应是一家国内最早掌握 “专业 B2B 商贸搜索引擎” 和 “中小企业上下游产业链” 核心技

0评论2024-11-226

android虚拟机的特点有哪些
Android虚拟机是一种运行在计算机上的模拟Android操作系统的软件。它的特点包括:跨平台兼容性:Android虚拟机可以在不同的操作

0评论2024-11-08895

sqlserver对象名无效的原因有哪些
对象名称包含非法字符:SQL Server 对象名称只能包含字母、数字、下划线和美元符号,并且不能以数字开头。如果对象名称包含其他

0评论2024-11-08611

r语言怎么导出excel数据
要在R语言中导出数据到Excel,你可以使用write.xlsx函数来实现。这个函数需要使用openxlsx包。首先,确保已经安装了openxlsx包。

0评论2024-11-08445

怎么自建幻兽帕鲁服务器
要自建幻兽帕鲁服务器,您需要遵循以下步骤:1. 获取服务器:首先,您需要获取一台物理或虚拟服务器,确保具备足够的计算资源和

0评论2024-11-08481

Python中怎么将元组转换为字符串
在Python中,可以通过join函数和map函数将元组转换为字符串。假设有一个元组t = (1, 2, 3, 4, 5),可以使用join函数将元组中的元

0评论2024-11-08268

centos没有可用软件包怎么解决
如果CentOS没有可用的软件包,可以尝试以下解决方法:1. 检查软件源:确保您的CentOS系统已经配置了正确的软件源。可以使用命令`

0评论2024-11-08567

mysql唯一性约束如何设置
在MySQL中,可以通过使用UNIQUE关键字来设置唯一性约束。唯一性约束可以用于确保表中的某个列或一组列的值是唯一的。以下是在MyS

0评论2024-11-08407

关于我们  |  网站留言
(c)2025 吉日象上门维修 www.mykuaidi.com