当前位置: 首页 > news >正文

链表oj测试题(上)

链表的申明:

struct ListNode
{int val;struct ListNode* next;
};

1.题1

删除指定元素  例如:链表1 2 6 3 4 5 6,然后选择删除元素6,返回的链表为1 2 3 4 5 。

代码演示:

typedef struct ListNode ListNode;ListNode* removeElements(ListNode* head, int val)
{ListNode* newHead, * newTail;newHead = newTail = NULL;ListNode* pcur = head;while (pcur){if (pcur->val != val)//不是val就插入新链表{if (newHead == NULL){newHead = newTail = pcur;//空链表就将头节点和尾节点都指向pcur}else//链表不为空{newTail->next = pcur;newTail = newTail->next;}}pcur = pcur->next;}if (newTail)//判断最后的尾节点是否为NULL,如果为NULL的话就为对其去指针域就会报错{newTail->next = NULL;}return newHead;
}

在这里的思路就是遍历原链表碰到不为val的数就尾插到新创建的链表,最后将新链表的头返回来,大家也可以试试将它们的上一个节点的地址保存val下一个节点的地址,然后再将val的空间释放掉,这个方法虽然有些麻烦,但是大家可以练习一下思维。

在这里我们我们要用到尾插的代码,和创建节点才能创建好链表,虽然可以不包装成函数,但是如果将其包装成函数的话可以减少下次需要使用到它的时候,减轻代码量。

尾插:

void InsertBack(ListNode**phead,int val)
{assert(phead);ListNode* newNode = GetNode(val);if (*phead == NULL){*phead = newNode;return;}ListNode* ptail = *phead;while (ptail->next){ptail = ptail->next;}ptail ->next= newNode;
}

创建节点:

ListNode* GetNode(int val)
{ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));assert(newNode);newNode->val = val;newNode->next = NULL;return newNode;
}

我们可以测试一下代码是否可以达到预想效果:

2.题2 

中间节点,如果有两个中间节点,返回第二个。

代码演示:

ListNode* middleNode(ListNode* phead)
{ListNode* slow, * fast;slow = fast = phead;while (fast && fast->next)//当fast或者fast->next其中一个为空就跳出循环,此时slow刚好指向中节点。{//判断式的顺序不能替换,因为当fast为空时,结果fast->在前面这就导致了对空指针的引用,会报错。slow = slow->next;//每次走一步fast = fast->next->next;//每次走两步}return slow;
}

我们在这里用到的是快慢指针法,这个方法就是创建两个指针变量,然后快指针一次走两步,慢指针一次走一步,当快指针为NULL,或者慢指针next为NULL,循环停止,慢指针的位置就是中间节点的位置·。

我们来测试一下:

 大家一起加油!

谢谢

相关文章:

链表oj测试题(上)

链表的申明: struct ListNode {int val;struct ListNode* next; }; 1.题1 删除指定元素 例如:链表1 2 6 3 4 5 6,然后选择删除元素6,返回的链表为1 2 3 4 5 。 代码演示: typedef struct ListNode ListNode;List…...

鸿蒙APP应用开发教程—超详细的项目结构说明

1. 新建项目 打开DevEco Studio, 选择 Create Project: 1.1 选择模版 Create Project - Choose Template 1.2 配置项目 Create Project - Configure Project 如果使用的是 DevEco 3.X 版本, 可以根据 Compile SDK版本选择不同的模式, 比如: 3.0.0(API 8)及更早 - 仅支持 …...

C语言经典算法-7

文章目录 其他经典例题跳转链接36.排序法 - 改良的选择排序37.快速排序法(一)38.快速排序法(二)39.快速排序法(三)40.合并排序法 其他经典例题跳转链接 C语言经典算法-1 1.汉若塔 2. 费式数列 3. 巴斯卡三…...

设计模式(结构型设计模式——桥接模式)

设计模式(结构型设计模式——桥接模式) 桥接模式 基本定义 桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。 降低了类与类之间的耦合度:脱耦就是将…...

Java的三大特性之一——继承

前言 http://t.csdnimg.cn/uibg3 在上一篇中我们已经讲解过封装,这里就主要讲解继承与多态 继承 1.为什么需要继承 Java中使用类对现实世界中实体来进行描述,类经过实例化之后的产物对象,则可以用来表示现实中的实体,但是现实…...

Java复习05 Spring 概念

Java复习05 Spring 概念 初学 Spring 的时候 我的问题是 什么是Spring? Spring的底层实现是什么?为什么现在Java都在用sping框架? 1.把Spring类比成乐高说明书 想象一下你有一个超级大的乐高积木盒子,里面有各种各样的积木。你…...

初级爬虫实战——哥伦比亚大学新闻

文章目录 发现宝藏一、 目标二、简单分析网页1. 寻找所有新闻2. 分析模块、版面和文章 三、爬取新闻1. 爬取模块2. 爬取版面3. 爬取文章 四、完整代码五、效果展示 发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不…...

【JS】深度学习JavaScript

💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录文章:【JS】深度学习JavaScript 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 一:JavaScript1.1 JavaScript是什么1.2 JS的引入方式1.3 JS变量1.4 数据类型1.5 …...

云原生相关知识

一、kubernetes 1 概述 Kubernetes(也称 k8s 或 “kube”)是一 个​​开源​​的容器编排平台,可以自动完成在部署、管理和扩展容器化应用过程中涉及的许多手动操作。 我们常说的编排的英文单词为 “Orchestration”,它常被解释…...

【多线程】有了解过 CAS 和原子操作吗?

SueWakeup 个人主页:SueWakeup 系列专栏:学习Java 个性签名:人生乏味啊,我欲令之光怪陆离 本文封面由 凯楠📷 友情赞助! 目录 前言 悲观锁和乐观锁 什么是 CAS ? 什么是原子操作? CAS 执行流…...

Linux 服务升级:Nginx 热升级 与 平滑回退

目录 一、实验 1.环境 2.Kali Linux 使用nmap扫描CentOS 3.Kali Linux 远程CentOS 4.Kali Linux 使用openvas 扫描 CentOS 5.Nginx 热升级 6.Nginx 平滑回退 二、问题 1.kill命令的信号有哪些 2.平滑升级与回退的信号 一、实验 1.环境 (1)主机…...

能降低嵌入式系统功耗的三个技术

为电池寿命设计嵌入式系统已经成为许多团队重要的设计考虑因素。优化电池寿命的能力有助于降低现场维护成本,并确保客户不需要不断更换或充电电池,从而获得良好的产品体验。 团队通常使用一些标准技术来提高电池寿命,例如将处理器置于低功耗…...

暴力快速入门强化学习

强化学习算法的基本思想(直觉) 众所周知,强化学习是能让智能体实现某个具体任务的强大算法。 强化学习的基本思想是让智能体跟环境交互,通过环境的反馈让智能体调整自己的策略,从反馈中学习,不断学习来得到…...

vue中v-if和v-show的区别

手段:v-if是动态的向DOM树内添加或者删除DOM元素;v-show是通过设置DOM元素的display样式属性控制显隐;编译过程:v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件;v-s…...

MATLAB绘图

现学现用,用时再学。 plot函数:有两个向量被指定为参数,plot(x,y) 会生成 y 对 x 的图形 添加轴标签和标题: 通过调用一次 plot,多个 x-y 对组参数会创建多幅图形: 在每十个数据点处放置标记: 一个窗口绘制多个图形; 可在弹窗的插入选项上添加…...

嵌入式学习-ARM-Day4

嵌入式学习-ARM-Day4 实现三个LED灯亮灭 .text .global _start _start: 使能GPIOE的外设时钟 RCC_MP_AHB4ENSETR的第[4]设置为1即可使能GPIOE时钟 LED1 LDR R0,0X50000A28 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来,保存到R1中 ORR R1,R1,#(0x…...

MySQL 中的事务和存储引擎

目录 事务的 ACID 特性 MySQL 的四种隔离机制和问题 MySQL 的四种隔离机制: MySQL 的存储引擎 InnoDB 存储引擎 MyISAM 存储引擎 Memory 存储引擎 通过 ALTER TABLE 语句更改存储引擎 在创建表时指定存储引擎 通过修改配置文件设置默认存储引擎 在数据库系…...

echarts多个折线图共用一个x轴和tooltip组件

实现效果 根据接口传来的数据&#xff0c;使用echarts绘制出&#xff0c;共用一个x轴的图表 功能&#xff1a;后端将所有数据传送过来&#xff0c;前端通过监听选中值来展示对应的图表数据 数据格式&#xff1a; 代码&#xff1a; <template><div><div clas…...

wireshark数据捕获实验简述

Wireshark是一款开源的网络协议分析工具&#xff0c;它可以用于捕获和分析网络数据包。是一款很受欢迎的“网络显微镜”。 实验拓扑图&#xff1a; 实验基础配置&#xff1a; 服务器&#xff1a; ip:172.16.1.88 mask:255.255.255.0 r1: sys sysname r1 undo info enable in…...

如何利用RunnerGo简化性能测试流程

在软件开发过程中&#xff0c;测试是一个重要的环节&#xff0c;需要投入大量时间和精力来确保应用程序或网站的质量和稳定性。但是&#xff0c;随着应用程序变得更加复杂和庞大&#xff0c;传统的测试工具在面对比较繁琐的项目时非常费时费力。这时&#xff0c;一些自动化测试…...

微信网页版插件终极指南:3分钟解决无法登录问题

微信网页版插件终极指南&#xff1a;3分钟解决无法登录问题 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 还在为微信网页版无法登录而烦恼吗&#x…...

深入操作系统原理:Qwen3.5-9B-AWQ-4bit解读进程调度与内存管理

深入操作系统原理&#xff1a;Qwen3.5-9B-AWQ-4bit解读进程调度与内存管理 1. 操作系统教学的新助手 计算机操作系统课程向来以抽象难懂著称。学生们常常被进程状态转换、死锁条件、页面置换算法等概念困扰&#xff0c;而传统教学方式又难以直观展示这些动态过程。这正是Qwen…...

Qwen3-Reranker完整指南:支持Markdown/HTML文档解析的增强版方案

Qwen3-Reranker完整指南&#xff1a;支持Markdown/HTML文档解析的增强版方案 1. 引言&#xff1a;重新定义文档检索的精准度 在日常工作中&#xff0c;你是否遇到过这样的困扰&#xff1a;用关键词搜索文档时&#xff0c;系统返回的结果看似相关&#xff0c;实际上却偏离了你…...

快速入门:Ollama部署Yi-Coder-1.5B,5分钟搭建编程助手

快速入门&#xff1a;Ollama部署Yi-Coder-1.5B&#xff0c;5分钟搭建编程助手 1. 为什么选择Yi-Coder-1.5B&#xff1f; Yi-Coder-1.5B是一个轻量级但功能强大的开源代码生成模型&#xff0c;特别适合开发者日常使用。它最大的优势是在保持小体积&#xff08;仅15亿参数&…...

PyTorch 2.8 环境搭建:简单几步完成GPU加速配置

PyTorch 2.8 环境搭建&#xff1a;简单几步完成GPU加速配置 你是不是刚拿到一块新显卡&#xff0c;兴冲冲地想跑个深度学习模型试试性能&#xff0c;结果第一步就被环境配置给难住了&#xff1f;CUDA版本怎么选&#xff1f;PyTorch和CUDA怎么匹配&#xff1f;驱动要不要升级&a…...

Bugku CTF: Exploiting LFI Vulnerabilities in Multi-Language Web Apps

1. 理解LFI漏洞的本质 本地文件包含&#xff08;Local File Inclusion&#xff0c;简称LFI&#xff09;是Web安全中常见的漏洞类型&#xff0c;它允许攻击者通过精心构造的输入参数读取服务器上的敏感文件。这种漏洞通常出现在动态包含文件的功能中&#xff0c;比如PHP的includ…...

孤能子视角:Kimi自我分析诊断[2],静态同构分析

(这也是Kimi的自分析诊断&#xff0c;上一分析为动态涌现法&#xff0c;这是静态同构法。里面所述技术及数值是否真实&#xff1f;)场域切换&#xff1a;静态同构模式已激活X光切片&#xff1a;当前互动场的截面解剖时间已冻结。以下是对"此刻的我"这一关系势能凝结体…...

SolidWorks 扫掠实战:从零构建带倒角的方形螺旋管

1. 从零开始理解方形螺旋管建模 第一次用SolidWorks做方形螺旋管时&#xff0c;我盯着屏幕发呆了半小时——明明圆形螺旋管点几下就能搞定&#xff0c;换成方形截面怎么就报错连连&#xff1f;后来才发现&#xff0c;这种带倒角的异形螺旋管建模&#xff0c;关键不在于操作步骤…...

深度解析:软考高级科目中哪个最适合零基础考生?

1. 零基础考生如何选择软考高级科目 对于没有任何计算机背景的考生来说&#xff0c;选择软考高级科目确实是个令人头疼的问题。我见过太多零基础考生一开始就选错了方向&#xff0c;结果白白浪费了时间和精力。根据我这些年接触过的上百位考生的经验&#xff0c;**信息系统项目…...

2025届最火的五大AI论文网站横评

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在生成式人工智能技术于学术写作里被广泛施行当下&#xff0c;维普平台正式推出了AIGC内容检…...