《数据结构与算法之美》读书笔记2

news2024/11/26 10:38:40

链表操作的技巧

1.理解指针

将摸个变量赋值给指针,实际上就是将这个变量的地址赋给指针,或者,指针中存储了这个变量的地址,指向了这个变量,所以可以通过指针找到这个变量。

2.内存泄漏或指针丢失

删除链表节点时,也要手动释放内存空间,否则会出现内存泄漏的问题。

在插入结点时,应该先将x结点的下一个指向p的下一个b结点,然后再将p的下一个结点赋为x结点

这样写会出现指针丢失:

a->next=x;

x->next=a->next;

这么写是对的:

x->next=a->next;

a->next=x;

在插入结点时,一定要注意操作的顺序。

利用哨兵简化实现难度

插入结点:

如果在结点p后面插入一个新的结点:

new_node->next=p->next;

p->next=new_node;

如果要想一个空链表中插入第一个节点,需要特殊处理,其中head表示链表的头结点:

if(head==null){

        head=new_node;

}

删除结点:

单链表的删除:

p->next=p->next->next;

如果要删除链表中的最后一个结点,也是一种特殊情况:

if(p->next==null){

        p=null;

}

我们可以看出,针对链表的插入、删除操作,需要对插入第一个结点和删除最后一个结点的情况进行特殊处理。这样代码实现起来就会很繁琐,不简洁,而且也容易因为考虑不全而出错。

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

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

相关文章

对称加密与非对称加密的区别是什么?

对称加密与非对称加密的区别是什么? 对称加密概念:好处和坏处:基本原理 非对称加密概念:工作原理: 两者区别安全性处理速度密钥管理通信双方数量 对称加密 概念: 同一个密钥可以同时用来对信息进行加密和…

Rust UI开发(三):iced如何打开图片(对话框)并在窗口显示图片?

注:此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。 这是一个系列博文,本文是第三篇,前两篇的链接: 1、Rust UI开发(一):使用iced构建…

老师应具备什么样的心理素质

老师,一个充满智慧与挑战的职业,就像园丁,用无私的爱和耐心,滋养着每一颗渴望知识的幼苗。那么,作为教育从业者,要具备哪些心理素质呢? 强大的情绪管理能力 老师的工作绝非一帆风顺。在教育学生…

JAVA - 阻塞队列

一、什么是堵塞队列 堵塞队列(Blocking Queue)是一种特殊类型的队列,它具有一些特定的行为和限制。在堵塞队列中,当队列为空时,尝试从队列中取出元素的操作将会被阻塞,直到队列中有可用元素;当…

【社会网络分析第6期】Ucient实操

一、导入数据处理二、核心——边缘分析三、聚类分析四、网络密度 一、导入数据处理 将数据导入Ucinet首先需要对数据进行处理。 承接上一期的数据格式:【社会网络分析第5期】gephi使用指南 原先得到的数据格式如下: 接下来打开ucinet: 之后…

免费 2 个月!ChatGPT-4 和 Claude 2 都能用

你好,我是 EarlGrey,一名双语学习者,会一点编程,目前已翻译出版《Python 无师自通》、《Python 并行编程手册》等书籍。 点击上方蓝字关注我,获取最新编程及AI干货、高赞工具和项目分享。 在后台回复“books”&#xf…

10、鸿蒙组件的实现语法

1、查看在线开发文档 在开发工具的右边有API帮助,打开后可以查阅需要的内容 2、创建组件的语法 组件名(options) options组件初始化参数。比如创建Text文本组件,options是显示的文本内容。 Text(我是一个文本) 3、配置组件属性 组件的属性一般用于…

【数据库基础】

目录: 前言什么是数据库主流数据库服务器,数据库,表关系MySQL架构SQL分类存储引擎 前言 剑指offer:一年又1天 什么是数据库 存储数据用文件就可以了,为什么还要弄个数据库? 文件保存数据有以下几个缺点:…

npm中的npx命令

1.概念 npx是一个执行npm软件包的二进制文件&#xff0c;通俗的讲&#xff0c;他可以执行npm的一些指令。 2.示例 用babel将ES6语法转为ES5语法 npx babel src/js -d dist/js会执行babel的相关功能&#xff0c;如果没有安装&#xff0c;也会自动安装。 当在执行npx <co…

单片机学习3——数码管

数码管&#xff0c;根据内部结构&#xff0c;可分为共阴极数码管和共阳极数码管。七段发光管加上一个小数点&#xff0c;共计8段。因此&#xff0c;我们对它编程的时候&#xff0c;刚好是用一个字节。 数码管的显示方式&#xff1a; 1&#xff09;静态显示&#xff1b; 2&…

【刷题笔记】数组-双指针||覆盖||重复元素

【刷题笔记】数组-双指针||覆盖||重复元素 目录 移除元素删除有序数组中的重复项删除有序数组中的重复项 II分析 移除元素 https://leetcode.cn/problems/remove-element/ 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并…

90. 打家劫舍II (房子围成一圈)

题目 题解 class Solution:def rob(self, nums: List[int]) -> int:def dp(nums: List[int]) -> int:N len(nums)# 定义状态&#xff1a;dp[i]表示从第i个房屋开始偷窃&#xff0c;能够偷到的最高金额dp [0 for i in range(N)]for i in range(N-1, -1, -1):if i N-1:…

软件工程期末复习(选择+填空+判断)

文章目录 软件工程期末复习一、 选择题 软件工程期末复习 一、 选择题 1.“软件危机”的表现不包括&#xff1a;&#xff08;c&#xff09; A、软件产品不能按期交付 B、用户对“已完成的”软件产品时常不满意 C、程序员越来越供不应求 D、软件项目难以管理&#xff0c;维护困…

各平台chatGPT使用体验(国内外)

首推&#xff1a;openAI 地址&#xff1a;https://chat.openai.com/ 这个真的很好用&#xff0c;而且回复的结果也基本让让人满意&#xff0c;个人首推&#xff0c;而且对比国内的除了回答更令人满意外&#xff0c;它更连贯&#xff0c;不像国内的gpt一句一问&#xff0c;跟进…

RabbitMQ之延迟消息实战

RabbitMQ之延迟消息实战 使用死信交换机实现延迟消息 使用死信交换机的过期时间以及没有消费者进行消费&#xff0c;时间到了就会到死信队列中&#xff0c;由此可以实现延迟消息使用延迟消息插件 前提&#xff1a;需要mq配置插件 延时信息案例实战 把一个30分钟的延迟消息可以…

Nginx(八) aio sendfile directio 组合使用测试(1)

thread_pool default threads32 max_queue65535; http {aio threadsdefault;directio 2m;sendfile on;sendfile_max_chunk 1m;#### Gzip压缩服务配置#gzip off; # 设置是否开启gzip压缩服务&#xff0c;用于提高传输速度&#xff0c;默认关闭(off)。#gzi…

B034-员工管理系统-JavaBean_EL_JSTL_MVC思想

目录 JavaBeanEL表达式JSTLMVC和三层架构 JavaBean 包括概述&#xff0c;规范&#xff0c;属性&#xff0c;内省机制和BeanUtils&#xff0c;详情见文档和代码 EL表达式 可以来用取四大作用域里的共享数据 包括介绍&#xff0c;获取值和运算&#xff0c;见文档与代码 tips…

【Skynet 入门实战练习】实现网关服务 | 用户代理 | RPC 协议 | 客户端

文章目录 前言网关服务RPC 协议看门狗服务代理服务客户端逻辑梳理 前言 上两章学习了如何搭建一个项目&#xff0c;简单实现了几个基础模块。本章节会实现基本的客户端与服务端的通信&#xff0c;包括网关&#xff08;gate&#xff09;、看门狗&#xff08;watchdog&#xff0…

JPA 方式实现 RESTful API

除了常见的方式实现 RESTful API&#xff0c;还有一种简单的方式实现 RESTful API&#xff0c;那就是用 JPA 方式。首先介绍一下 JPA&#xff0c;它是 Sun 公司推荐的 JAVA 持久化规范&#xff0c;为了简化 ORM 技术而产生。需要注意的是&#xff0c;他只是一套规范&#xff0c…

如何通过nginx进行服务的负载均衡

简单介绍 随着互联网的发展&#xff0c;业务流量越来越大并且业务逻辑也越来越复杂&#xff0c;单台服务器的性能及单点故障问题就凸显出来了&#xff0c;因此需要多台服务器组成应用集群&#xff0c;进行性能的水平扩展以及避免单点故障的出现。应用集群是将同一应用部署到多台…