带头双向循环链表(一)
今天我们来学习带头双向链表
带头双向循环链表的解释
带头双向链表顾名思义就是:
1、带了一个“头”在数据结构中的意思就是加了一个"哨兵位"。
2、这个链表是双向循环的链表即可以通过任意的节点访问它的上一个和下一个的节点也能通过链表的头直接访问到链表的尾部。
带头双向循环链表的实现
带头双向循环链表的要求和单项循环链表的要求一样:头插,尾插,头删,尾删,查找,打印,前置插入,定点删除,链表销毁等要求要实现。
一、链表的头插
思路解析:
直接找到头结点的下一个,然后把创建的新节点和头结点连上去就行。
代码实现:
void LTPushFront(LTNode* phead, LTDateType x)
{assert(phead);LTNode* newnode = GreateLTNode(x);LTNode* first = phead->next;phead->next = newnode;newnode->next = first;newnode->prev = phead;first->prev = newnode;
}
二、链表的尾插
思路解析:
直接使用prev的指针找到最后的节点插入并与头结点和倒数第二个节点连接上即可。
代码实现:
void LTPushBank(LTNode* phead, LTDateType x)
{LTNode* tail = phead->prev;LTNode* newnode = GreateLTNode(x);tail->next = newnode;newnode->prev = tail;newnode->next = phead;phead->prev = newnode;
}
三、链表的头删
思路解析:
找到第一个和第二个节点直接把头结点和第二个节点直接连接起来最后free第一个节点即可。
代码实现:
void LTPopFront(LTNode* phead)
{assert(phead);assert(phead->next != phead);LTNode* cur = phead->next->next;LTNode* tail = phead->next;phead->next = cur;cur->prev = phead;free(tail);tail = NULL;
}
四、链表的尾删
思路解析:
找到倒数第二个节点然后直接连接到头结点,free最后一个节点即可。
代码实现:
void LTPopBank(LTNode*phead)assert(phead);assert(phead->next != phead);LTNode* tail = phead->prev;LTNode* tailprev = tail->prev;free(tail);tailprev->next = phead;phead->prev = tailprev;}
剩下的几个接口我们会在明天继续完成,如有错误还请大佬们敬请指出,谢谢大家的关注谢谢。
相关文章:
带头双向循环链表(一)
今天我们来学习带头双向链表 带头双向循环链表的解释 带头双向链表顾名思义就是: 1、带了一个“头”在数据结构中的意思就是加了一个"哨兵位"。 2、这个链表是双向循环的链表即可以通过任意的节点访问它的上一个和下一个的节点也能通过链表的头直接访…...
深入理解Win32K.sys的工作原理
https://download.csdn.net/download/sitelist/89621815 Windows Resource Kits 2003.rar工具下载,因为有windows server 2003源代码,并可以编译成iso,所以对于研究windows系统很有帮助,上吗是2003的研究工具,不知道源…...
力扣面试经典算法150题:删除有序数组中的重复项
删除有序数组中的重复项 今天的题目是力扣面试经典150题中的数组的简单题: 删除有序数组中的重复项 题目链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述 给定一…...
文本加密工具类-支持MD5、SHA1、SHA256、SHA224、SHA512、SHA384、SHA3、RIPMD160算法
文本加密工具类 1.算法简介1.1 MD51.2 SHA-11.3 SHA-2(推荐使用)1.4 SHA-3(推荐使用)1.5 RIPEMD-160 2.工具类案例2.1POM导入2.2代码编写2.3 输出示例 1.算法简介 1.1 MD5 MD5 (Message-Digest Algorithm 5) 描述:M…...
LVS集群中的负载均衡技术
目录 一、LVS技术原理 二、NAT模式原理及部署方法 1、工作原理 2、部署方法 1、网络配置 2、软件安装与启用 3、测试 三、DR模式原理及部署方法 1、工作原理 2、部署方法 1、网络配置 2、解决vip响应问题 3、测试 四、ipvsadm命令及参数 1、管理集群服务&#x…...
Java网络编程——HTTP协议原理
协议 我们在网上冲浪时,会在浏览器地址栏输入一个网址,然后就能打开网页了。比如,输入 https://www.douban.com/就可以访问到豆瓣的主页: 那么大家是否好奇:https 是什么意思,作用又是什么呢?…...
java之多线程篇
一、基本概念 1.什么是线程? 线程就是,操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。简单理解就是:应用软件中互相独立,可以同时运行的功能 2.什么是多线程? 有了多线…...
【深度学习】TTS,CosyVoice,训练脚本解析
https://github.com/FunAudioLLM/CosyVoice/blob/main/examples/libritts/cosyvoice/run.sh Bash 脚本是一个语音合成(TTS)训练和推理的完整流水线。让我们逐步解析这个脚本的各个部分。 初始化部分 #!/bin/bash # Copyright 2024 Alibaba Inc. All Rights Reserved. . ./…...
《Unity3D网络游戏实战》学习与实践
纸上得来终觉浅,绝知此事要躬行~ Echo 网络上的两个程序通过一个双向的通信连接实现数据交换,这个连接的一端称为一个Socket “端口”是英文port的意译,是设备与外界通信交流的出口。每台计算机可以分配0到65535共65536个端口 每一条Sock…...
Machine_Matrix打靶渗透【附代码】(权限提升)
靶机下载地址: https%3A%2F%2Fdownload.vulnhub.com%2Fmatrix%2FMachine_Matrix.zip 1. 主机发现端口扫描目录扫描敏感信息获取 1.1. 主机发现 nmap -sn 192.168.7.0/24|grep -B 2 08:00:27:D9:36:81 1.2. 端口扫描 nmap -p- 192.168.7.155 1.3. 目录扫描 dir…...
代码随想录算法训练营Day22 | Leetcode 77 组合 Leetcode 216 组合总和Ⅲ Leetcode17 电话号码的字母组合
前言 回溯算法中递归的逻辑不重要,只要掌握回溯的模板以及将问题转化为树形图,整个问题就很好解决了,比二叉树简单。 Leetcode 77 组合 题目链接:77. 组合 - 力扣(LeetCode) 代码随想录题解:…...
【微信小程序实战教程】之微信小程序中的 JavaScript
微信小程序中的 JavaScript 微信小程序的业务逻辑都是通过JavaScript语言来实现的,本章我们将详细的讲解JavaScript的基本概念,以及在小程序中如何使用JavaScript语言。JavaScript是一种轻量的、解释型的、面向对象的头等函数语言,是一种动态…...
K-近邻算法(一)
一、 K- 近邻算法 (KNN) 概念 1.1 K- 近邻算法 (KNN) 概念 K Nearest Neighbor 算法⼜叫 KNN 算法,这个算法是机器学习⾥⾯⼀个⽐较经典的算法, 总体来说 KNN 算法是相对⽐ 较容易理解的算法 定义 : 如果⼀个样本在特征空间中的k 个最相似 ( 即特征空间…...
从零开始之AI视频制作篇
从零开始之AI视频制作篇 文章目录 从零开始之AI视频制作篇前言一、工具列表二、成片展示三、制作流程1、获取图片素材2、图片生成视频2.1 Runway操作流程 3、文本生成语音3.1 Fish Audio操作流程 4、视频剪辑4.1 音频素材4.2 字幕生成 四、Runway提示词参考:参考 前…...
Java之TCP编程综合案例
1.反转案例 搭建一个TCP客户端,从键盘录入整行数据(遇到quit结束录入)然后发送给服务器,再接收服务器返回的数据并输出。 package com.briup.chap12;public class Test064_ReversalClient {public static void main(String[] ar…...
【数据分析---Pandas实战指南:精通数据查询、增删改操作与高效索引和列名操作管理】
前言: 💞💞大家好,我是书生♡,本阶段和大家一起分享和探索数据分析,本篇文章主要讲述了:数据查询操作,数据增删改操作,索引和列名操作等等。欢迎大家一起探索讨论&#x…...
Spring Cloud全解析:注册中心之Eureka服务获取和服务续约
服务获取和服务续约 eureka客户端通过定时任务的方式进行服务获取和服务续约,在com.netflix.discovery.DiscoveryClient类中,启动了两个定时任务来进行处理 private void initScheduledTasks() {// 是否需要拉取if (clientConfig.shouldFetchRegistry(…...
三相整流电路交流侧谐波仿真分析及计算
一、三相桥式全控整流电路和功率因数测量电路SIMULINK 模型 如图4-1,根据高频焊机的主电路机构和工作原理,可将高频焊机三相整流部分等效为阻感负载的三相桥式全控整流电路模型,其由三相交流电压源、三相晶闸管整流桥、同步六脉冲触发器和阻感…...
了解Java中的反射,带你如何使用反射
反射的定义 反射(Reflection)是Java的一种强大机制,它允许程序在运行时动态地查询和操作类的属性和方法。通过反射,Java程序可以获取类的信息,比如类的名称、方法、字段,以及可以动态地创建对象、调用方法…...
【c++】基础知识——快速入门c++
🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:C 目录 前言 一、手搓一个Hello World 二、命名空间namespace 1.命名空间的定义 2.命名空间的使用 3.命名空间补充知识 三、c中的输入和输出 四、缺省参…...
用Python和NumPy手把手实现投影矩阵:从二维投影到最小二乘法拟合
用Python和NumPy手把手实现投影矩阵:从二维投影到最小二乘法拟合 线性代数中的投影概念看似抽象,但在数据科学和机器学习中无处不在。想象一下,当你用线性回归拟合数据点时,本质上是在寻找一个子空间,使得所有数据点到…...
MTKClient实战指南:从环境搭建到故障排查的完整路径
MTKClient实战指南:从环境搭建到故障排查的完整路径 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient MTKClient作为一款专注于联发科芯片组设备的开源工具配置方案,提…...
Qwen3-ASR-1.7B语音识别进阶指南:上下文联想纠错机制原理与提示词增强技巧
Qwen3-ASR-1.7B语音识别进阶指南:上下文联想纠错机制原理与提示词增强技巧 1. 引言:从“听清”到“听懂”的跨越 如果你用过一些基础的语音转文字工具,可能会遇到这样的困扰:明明每个字都识别出来了,但连成句子却感觉…...
协程设计原理与汇编实现:从原语到网络IO Hook
一、为什么需要协程?在高并发网络编程中,我们面临一个经典矛盾:同步编程简单但性能差,异步编程性能高但代码复杂。协程的出现,正是为了用同步的写法获得异步的性能。1.1 同步与异步的本质同步:串行执行&…...
Facebook广告细分定位新功能解析
Facebook广告细分定位新功能的本质,是广告受众定位正式进入了“自然语言”时代。简单来说,就是把过去从庞大的标签库里找词,变成了直接用日常语言描述你想要触达的目标人群。这背后,是Meta全新的 “Andromeda”(仙女座…...
Rust内存管理与安全:告别内存泄漏和空指针
Rust内存管理与安全:告别内存泄漏和空指针 后端转 Rust 的萌新,ID "第一程序员"——名字大,人很菜(暂时)。正在跟所有权和生命周期死磕,日常记录 Rust 学习路上的踩坑经验和"啊哈时刻"…...
Guardrails多区域部署终极指南:构建全球LLM安全服务架构
Guardrails多区域部署终极指南:构建全球LLM安全服务架构 【免费下载链接】guardrails Adding guardrails to large language models. 项目地址: https://gitcode.com/gh_mirrors/gu/guardrails 在当今AI应用全球化的浪潮中,如何为大型语言模型&am…...
OpenClaw隐私计算:千问3.5-9B处理加密数据技巧
OpenClaw隐私计算:千问3.5-9B处理加密数据技巧 1. 为什么需要加密数据自动化处理 作为金融行业的技术从业者,我经常需要处理包含客户信息的Excel报表和PDF合同。这些文件既需要被分析处理,又必须满足严格的合规要求——原始数据不能以明文形…...
OpenClaw排错大全:Phi-3-mini-128k-instruct接口连接失败7种解决方案
OpenClaw排错大全:Phi-3-mini-128k-instruct接口连接失败7种解决方案 1. 问题背景与排查思路 上周我在本地部署Phi-3-mini-128k-instruct模型时,遇到了OpenClaw连接失败的棘手问题。控制台不断报错"Model connection timeout",但…...
高压电源软启动:从浪涌抑制到系统可靠性的工程实践
1. 高压电源软启动的必要性 第一次见到整流二极管炸裂的场景,至今记忆犹新。那是在一个工业电源调试现场,工程师刚合上电闸就听到"啪"的一声脆响,随后便闻到焦糊味——价值数百元的整流模块瞬间报废。罪魁祸首就是电容滤波电路带来…...
