909-2014-T1

文章目录

  • 1.原题
  • 2.算法思想
  • 3.关键代码
  • 4.完整代码
  • 5.运行结果

1.原题

为带表头的单链表类Chain编写一个成员函数Reverse,该函数对链表进行逆序操作(将链表中的结点按与原序相反的顺序连接),要求逆序操作就地进行,不分配任何新的结点。要求首先给出类的声明,在类的声明中,其它成员函数省略。

2.算法思想

定义三个指针变量,*prevNode、*currentNode、*nextNode,在遍历过程中反指。对第一个元素和最后一个的元素处理略有不同,需要单独处理。

3.关键代码

/*** @struct ListNode* @brief 单链表中的节点结构。*/
struct ListNode {int data; /**< 节点中存储的数据 */struct ListNode *next; /**< 指向下一个节点的指针 */
};/*** @struct List* @brief 单链表结构。*/
struct List {struct ListNode *head; /**< 指向链表头节点的指针 */int size; /**< 链表的大小 */
};/*** @brief 反转链表中的元素。* @param list 指向 List 结构的指针。*/
void Reverse(struct List *list) {struct ListNode *prevNode = NULL, *currentNode = list->head->next, *nextNode = NULL;while (currentNode != NULL) {nextNode = currentNode->next; // 存储下一个节点currentNode->next = prevNode; // 反转指向前一个节点的指针prevNode = currentNode; // 移动指针以进行下一次迭代currentNode = nextNode;}list->head->next = prevNode; // 更新头指针,使其指向反转后的新的第一个节点
}

4.完整代码

/*** @file main.c* @brief 实现了单链表及其反转操作。*/#include <stdio.h>
#include <stdlib.h>/*** @struct ListNode* @brief 单链表中的节点结构。*/
struct ListNode {int data; /**< 节点中存储的数据 */struct ListNode *next; /**< 指向下一个节点的指针 */
};/*** @struct List* @brief 单链表结构。*/
struct List {struct ListNode *head; /**< 指向链表头节点的指针 */int size; /**< 链表的大小 */
};/*** @brief 反转链表中的元素。* @param list 指向 List 结构的指针。*/
void Reverse(struct List *list) {struct ListNode *prevNode = NULL, *currentNode = list->head->next, *nextNode = NULL;while (currentNode != NULL) {nextNode = currentNode->next; // 存储下一个节点currentNode->next = prevNode; // 反转指向前一个节点的指针prevNode = currentNode; // 移动指针以进行下一次迭代currentNode = nextNode;}list->head->next = prevNode; // 更新头指针,使其指向反转后的新的第一个节点
}/*** @brief 显示链表中的元素。* @param list 指向 List 结构的指针。*/
void displayList(struct List *list) {struct ListNode *currentNode = list->head->next;printf("head");while (currentNode != NULL) {printf("->%d", currentNode->data);currentNode = currentNode->next;}printf("->NULL\n");
}/*** @brief 主函数展示链表操作。* @return 程序退出状态。*/
int main() {struct List list;list.head = (struct ListNode *) malloc(sizeof(struct ListNode));list.head->next = NULL;list.size = 0;// 插入初始元素 1, 2, 3, 4, 5for (int i = 1; i <= 5; ++i) {struct ListNode *newNode = (struct ListNode *) malloc(sizeof(struct ListNode));newNode->data = i;newNode->next = list.head->next;list.head->next = newNode;list.size++;}// 输出原始链表printf("Original List: ");displayList(&list);// 执行反转操作Reverse(&list);// 输出反转后的链表printf("Reversed List: ");displayList(&list);return 0;
}

5.运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/157559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

远程命令执行漏洞原理,以及防护绕过方式

一、背景 RCE(Remote Command /Code Execute) 远程代码执行漏洞 通过PHP代码注入、Java代码注入等方式连接程序中预留的后门或接口从而进行远程命令执行&#xff0c;达到对服务器的控制。 为什么会出现远程代码执行漏洞呢&#xff1f; Web应用有时需要调用执行一些系统命令函数…

数据库的基本操作

DDL&#xff1a; 1.查询 show databases; 创建数据库&#xff1a; create data 数据库名称; 创建数据库(判断&#xff0c;如果不存在则创建)&#xff1a; create database if not exists 数据库名称&#xff1b; 删除数据库 drop database 数据库名称&#xff1b; drop databa…

异行星低代码平台--第三方插件对接:企业微信平台对接(二)

异行星低代码平台可以集成企业微信&#xff0c;实现单点登录、消息推送和组织机构同步。 提示 此功能需要异行星低代码平台企业版授权才能使用。 企业微信集成​ 单点登录 异行星低代码平台集成到企业微信后&#xff0c;只要使用企业微信账户登录企业微信客户端&#xff0…

CSS-背景属性篇

属性名&#xff1a;background-color 功能&#xff1a;设置背景颜色 属性值&#xff1a;符合CSS中颜色规范的值 默认背景颜色是 transparent body{ background-color: blue; } 属性名&#xff1a;background-image 功能&#xff1a;设置背景图片 属性值&#xff1a;url(图片的…

sklearn中的TfidfTransformer和gensim中的TfidfModel的区别

sklearn.feature_extraction.text.TfidfTransformer 和 gensim.models.TfidfModel 都是用于计算文本数据的 TF-IDF 值的工具。它们的主要区别在于实现方式和输入数据的格式。 1、实现方式和输入数据格式&#xff1a; TfidfTransformer 是 scikit-learn 中的一个类&#xff0c;…

PyTorch多GPU训练时同步梯度是mean还是sum?

PyTorch 通过两种方式可以进行多GPU训练: DataParallel, DistributedDataParallel. 当使用DataParallel的时候, 梯度的计算结果和在单卡上跑是一样的, 对每个数据计算出来的梯度进行累加. 当使用DistributedDataParallel的时候, 每个卡单独计算梯度, 然后多卡的梯度再进行平均.…

shell 脚本语句

目录 条件语句 test 命令 比较整数数值 字符串比较 命令举 条件逻辑测试操作 组合写法 举例 双中括号 ​编辑 ( ) / { } if 语句的结构 case 语句 脚本举例 识别 yes 和 no 脚本 检查磁盘使用情况脚本 新建用户以及随机设置用户密码的脚本 补充命令 [RANDOM…

【高性能计算】CUDA,OpenCL,FPGA 加速,MPI

OpenCL OpenCL&#xff08;Open Computing Language&#xff09;是一种跨平台的GPU加速技术&#xff0c;由Khronos Group开发。OpenCL允许开发人员在不同的硬件平台上编写并行计算应用程序。 OpenCL使用C语言的子集来编写应用程序&#xff0c;并提供了一组API&#xff0c;可以…

web:[GXYCTF2019]禁止套娃

题目 打开页面显示为 没有其他信息&#xff0c;查看源代码也是空的 用dirsearch扫一下 可能是git源码泄露&#xff0c;可以用githack获取源码 python Githack.py http://5063c85b-a33d-4b6f-ae67-262231a4582e.node4.buuoj.cn:81/.git/去工具所在的目录找到index.php文件 打开…

香港服务器减少延迟的几种方法

我们在租用香港服务器时&#xff0c;总觉得网站程序反应太慢。选择了香港服务器的开发商和企业对香港服务器目前的访问速度不满意 怎么办&#xff1f;第一点是换服务器。更换配置更大、带宽更高的服务器&#xff0c;可以更好的解决网站访问速度。如何减少香港服务器的延时 速度…

hm商城微服务远程调用及拆分

RequiredArgsConstructor是Lombok库中的一个注解 它会自动在类中生成一个构造函数&#xff0c;这个构造函数会接收类中所有被标记为final的字段&#xff0c;并将其作为参数。这个注解可以帮助我们减少样板代码&#xff0c;例如手动编写构造函数。 eg&#xff1a; public fin…

【JavaEE】Spring的创建和使用(保姆级手把手图解)

一、创建一个Spring项目 1.1 创建一个Maven项目 1.2 添加 Spring 框架支持 在pom.xml中添加 <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.3.RELEASE&…

数据仓库架构之详解Kappa和Lambda

目录 一、前言 二、架构详解 1 Lambda 架构 1.1 Lambda 架构组成 1.2 Lambda 特点 1.3 Lambda 架构的优点 1.4 Lambda 架构的不足 2 Kappa 架构 2.1 Kappa 架构的核心组件 2.2 Kappa 架构优点 2.3 Kappa 架构的注意事项 三、区别对比 四、选择时考虑因素 一、前言 …

vue解除数据双向绑定

let obj JSON.parse(JSON.stringify(data));例如&#xff0c;table列表中&#xff0c;点击编辑时&#xff0c;可对val进行如上操作来解除双向绑定

【冒泡排序设计】

【冒泡排序设计】 思路代码结果 思路 冒泡排序这个算法&#xff0c;对于我这样的初学者来说&#xff0c;也不是很简单&#xff01;&#xff01;&#xff01;&#xff08;没有想象的那么简单&#xff09;&#xff01;  它的核心思想是&#xff1a;两两相邻的元素进行比较&#…

Django DRF限流组件

在DRF中&#xff0c;限流发生在认证、权限之后&#xff0c;限流组件的使用步骤&#xff1a; 1、编写自定义限流类&#xff1b; 2、在settings.py中配置redis&#xff1b; 3、安装django-redis; 4、启动redis服务&#xff1b; 5、局部应用&#xff0c;一般是在核心的视图中使用&…

2023前端大厂高频面试题之JavaScript篇(5)

系列文章: 2023前端大厂高频面试题之JavaScript篇(1) 2023前端大厂高频面试题之JavaScript篇(2) 2023前端大厂高频面试题之JavaScript篇(3) 2023前端大厂高频面试题之JavaScript篇(4) 2023前端大厂高频面试题之JavaScript篇(5) 2023前端大厂高频面试题之HTML篇 2023前端大厂高…

源码安装Apache

一、下载Apache,源码安装Apache #下载 [rootlocalhost opt]# wget -c https://mirrors.aliyun.com/apache/httpd/httpd-2.4.58.tar.gz [rootlocalhost opt]# ls httpd-2.4.58.tar.gz [rootlocalhost opt]# tar -xf httpd-2.4.58.tar.gz [rootlocalhost opt]# ls httpd-2.4.58…

达索系统3DEXPERIENCE WORKS 2024 Fabrication新功能

当发现产品的制造环节&#xff0c;以及因产品模型本身的设计而导致制造环节存在不合理性&#xff0c;从而导致加工制造成本增加。 快速判断&#xff0c;轻松协作 在达索系统3DEXPERIENCE WORKS 2024中我们可以快速的判断产品的可制造性&#xff0c;以及快速与前端设计沟通协作…

Linux驱动开发笔记(四):设备驱动介绍、熟悉杂项设备驱动和ubuntu开发杂项设备Demo

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/134533533 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…