循环双链表的查找、插入与删除

手把手教你用Anaconda安装李沐d2l-zh包(附常见报错解决方案) 本文提供了一份详尽的Anaconda环境下安装李沐d2l-zh包的实战指南。文章从创建虚拟环境、配置国内镜像源加速下载入手,分步讲解核心依赖的预安装策略,并重点剖析了安装过程中常见的报错及其解决方法,旨在帮助初学者和开发者高效、稳定地搭建深度学习实验环境。 阅读详情

查找(有头结点)

按值查找
1.前趋方向

dblnode *p=first->rlink;
while(p!=NULL&&p->data!=x)
{
	p=p->rlink;
}
return p;

2.后继方向

dblnode *p=first->rlink;
while(p!=NULL&&p->data!=x)
{
	p=p->llink;
}
return p;

定位查找
查找第i个结点在链表中的位置

dbllist *locate(dbllist first,int i)
{
	if(i<0)  return 0;
	if(i==0) return first;
	int k;
	dbllist *p=(d==0)?first->llink:first->rlink;
	for(k=1;k<i;k++)
	{
		if(p==first)
		break;
		else p=(d==0)?p->llink:p->rlink;
		//d=0,前趋方向;d!=0,后继方向 
	}
	return (p!=first)?p:NULL;
}

插入

1.后继链

newnode->rlink=p->rlink;
p->rlink=newnode;
newnode->llink=p;
newnode->rlink->llink=newnode;

2.前驱链

newnode->llink=p->llink;
p->llink=newnode;
newnode->rlink=p;
newnode->llink->rlink=newnode;

总代码:

bool insert(dbllist first,datatype x,int i,int d)
{
	dbllist *p=locate(first,i-1,d);
	if(p==NULL) return false;
	dblnode *newnode=(dblnode *)malloc(sizeof(dblnode));
	newnode->data=x;
	if(d!=0)//在后继结点插入到*p右边 
	{
		newnode->rlink=p->rlink;
		p->rlink=newnode;
		newnode->llink=p;
		newnode->rlink->llink=newnode;
	}
	else
	{
		newnode->llink=p->llink;
		p->llink=newnode;
		newnode->rlink=p;
		newnode->llink->rlink=newnode;
	}
	return true;
}

删除

1.删除后表非空
请添加图片描述

代码如下:

p->rlink->llink=p->llink;
p->llink->rlink=p->rlink;

2.删除后表空
请添加图片描述

代码如下:

p->rlink->llink=p->llink;
p->llink->rlink=p->rlink;

总代码:

bool remove(dbllist first,int i,int d,datatype &x)
{
	dbllist *p=locate(first,i,d);
	if(p==NULL) return false;
	p->rlink->llink=p->llink;
	p->llink->rlink=p->rlink;
	x=p->data;
	free(p);
	return true;
}
Autosar Dcm配置-App到Boot的跳转及1002回复配置及实现-基于ETAS软件 在软件刷写流程中,上位机(诊断仪)发送1002后,APP检查允许跳转boot后,在特定的ram(软复位不清除)写入指定置后通过触发软件复位来跳转到boot的。在APP跳转到Bootloader时,1002的回复有两种方式,一种是APP直接回复,然后跳转,另一种是APP回复NRC78,然后跳转,在Boot中回复。本文介绍这两种方式的实现。如果是在APP中回复,可以少发一个0x78,整体跳转时间可能会少一些。但是如果诊断在收到5002之后立马请求其他的服务,可能出现boot正在初始化而未正常接收到报文。 阅读详情

相关推荐

给大一新生的蓝桥杯EDA备赛规划:从电路分析到立创EDA,如何用一年时间高效备赛?

本文为大一新生提供了一份系统的蓝桥杯EDA备赛规划,从电路分析基础到立创EDA实战操作,分阶段指导如何高效备赛。内容涵盖理论学习、软件操作、PCB设计专项提升及冲刺优化策略,帮助学生在一年内全面提升电子设计能力,为竞赛做好充分准备。

weixin_31476015的博客 283

循环双向链表的·插入、删除

#include"stdio.h" #include"stdlib.h" typedef int Status; typedef int ElemType; typedef struct MyStruct { ElemType data; MyStruct *prior; MyStruct *next; }*dlist,node; /* //获取指定节点地址 //位置不当是返回NULL...

qq_42777577的博客 812

linux和mac安装+配置circos(

一定要下载完这两个包,GD才会work,要不然会报错,且-modules显示也是fail。官网的教程说的很明白,但是很多包都已经过时了需要在网上找。一般来讲,所有包的安装都不会太困难,除了GD。1.是因为官网给的链接下出来的tgz无法解压。2.我的电脑安装后GD照样是fail的。,进入这个地址下一个.tgz。第二点的原因在于,官网的情况。,进入这个地址,按部就班。GD安装困难有以下几点。搞了一天终于配置成功。

xiufan1的博客 543

双向循环链表的创建,删除,插入,摧毁等操作(超详细)…… 〃•ω‹〃 (⌯꒪꒫꒪)੭

【代码】双向循环链表的创建,删除,插入,摧毁等操作(超详细)…… 〃•ω‹〃 (⌯꒪꒫꒪)੭。

2302_79862386的博客 1380

OctoMag: An Electromagnetic System for 5-DOF Wireless Micromanipulation

电磁线圈组驱动经典系统,可以作为参考。 OctoMag: 用于5自由度无线微操作的一个电磁铁系统 OctoMag: An Electromagnetic System for 5-DOF Wireless Micromanipulation [1] Paper Link Authors: J. J. Abbott, etc. 2010, TRO IEEE Transactions on Robot...

XU Yangxin的博客 1661

【昇腾】用MindIE(服务化方式)拉起glm4-9b-chat模型问题解决

【昇腾】用MindIE拉起glm4-9b-chat模型问题解决: LLMInferEngine failed to init LLMInferModels ERR: Failed to init endpoint! Please check the service log or console output. Killed make sure the folder's owner has execute permission.

u014448841的博客 5112

【数据结构】 循环双链表的基本操作 (C语言版)

【数据结构】 循环双链表的基本操作 (C语言版)

weixin_56814370的博客 1329

OSGEarth三维可视化避坑指南:如何高效加载SHP/TIF地理数据?

本文详细介绍了OSGEarth在三维地球可视化中高效加载SHP/TIF地理数据的实战策略,包括空间参考系配置、性能优化、二三维联动等关键技巧。通过具体案例和代码示例,帮助开发者解决坐标偏移、性能卡顿等常见问题,提升三维GIS开发效率。

weixin_29216957的博客 215

【数据结构】线性表 ⑥ ( 双循环链表 | 双循环链表插入操作 | 双循环链表删除操作 | LinkedList 双循环链表源码分析 )

一、双循环链表插入操作处理 二、双循环链表删除操作处理 三、LinkedList 双循环链表源码分析 1、链表节点 2、LinkedList 链表中收尾元素指针 3、链表插入操作 4、链表向指定位置插入操作 5、获取指定索引的元素 6、删除指定索引的元素

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 2418

Revit实战:从零到一,手把手教你用族(Family)搭建一个完整的水闸BIM模型

本文详细介绍了如何使用Revit的族(Family)功能从零开始构建一个完整的水闸BIM模型。通过参数化族设计,实现闸门开度调整自动关联流量计算等智能化功能,提升水利工程BIM模型的工程价值和应用效率。文章涵盖族库规划、核心构件创建、高级技巧及BIM数据深度应用,为水利工程数字化提供实用指南。

weixin_28738165的博客 244

Nuvoton OpenTitan开源安全芯片技术解析与应用

硬件安全模块(HSM)作为可信计算基的核心组件,其设计透明度和可验证性正成为行业焦点。RISC-V架构凭借开源特性,为构建可审计的安全芯片提供了新范式。OpenTitan项目通过开放Verilog源码和形式化证明,实现了从物理不可克隆函数(PUF)到分层安全启动的全栈透明。该方案在lowRISC Voyager开发板上实测显示,安全启动时间小于200ms,性能损耗仅7%,显著优于传统黑盒方案。目前该技术已应用于Chromebook和数据中心,其40nm工艺版本更将功耗降至5μA待机水平,为物联网和边缘计算提

weixin_36303807的博客 390

双向循环列表的插入和删除

DuLNode* InitInsertNode(DuLinkedList &L, ElemType x) { DuLNode *p = new DuLNode; p->element = x; return p; } void InsertList(DuLinkedList &L, ElemType x) /* 在 L 的第一个元素前插入新元素 x */ { DuLNode *p = InitInsertNode(L, x); //犯过的错误,调用L不是&L p-&.

awe19的博客 1885

微服务架构的实施与挑战:模式、优势与应对

本文探讨了微服务架构的实施,包括实施的前提、三种典型模式、实施优势和面临的挑战。首先,介绍了微服务架构实施的关键前提和所需条件;然后,详细阐述了从单体架构迁移、从无到有构建以及混合式架构等三种实施模式;接着,分析了微服务带来的技术和业务优势,如提高开发效率和组织灵活性;最后,讨论了实施微服务时可能遇到的技术挑战,如分布式事务管理和服务治理等问题,旨在为企业提供在实施微服务时的参考和指导。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 172万+

循环双链表详解(C语言版)

之前学习的双链表结构,可以实现从表中任一结点出发找到链表中的其他结点,但是该结构如果要从头结点开始查找尾结点,那么就需要通过遍历查找尾结点,这种情况下双链表的效率较低,为了解决这个缺点,将其改进为循环双链表,以此来提高查找效率。

qq_44075108的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

循环双链表的基本操作实现

一.实验目的      巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。 二.实验内容 1.建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。 三.实验程序实现如下 1 2 3 4

IMIS_TwentyEight的博客 661

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Python描述数据结构之循环双链表篇

本篇章主要介绍线性表中的循环双链表,并用Python实现其基本操作。

夏小悠的博客 1712

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

循环双链表的简单实现(C语言)

循环双链表的C语言版简单实现,及简单讲解

文溪山人的博客 2580

考研数据结构之线性表(1.5)——循环双链表的操作(C表示)

代码如下: #include <stdio.h> #include <stdlib.h> // 声明循环双链表的结构体 struct DLNode { int data; struct DLNode *prior; struct DLNode *next; }; /* 创建一个循环双链表(使用尾插法) */ /* *&L指的是要创建的单链表;a[]指的是要批量添加的整数数组;n指的是数组长度 */ void createDlistR(DLNode *&L,

二木成林 350

python编写代码实现一个循环双链表类_Python描述数据结构之循环双链表篇

文章目录前言1. 循环双链表2. 基本操作3. 代码实现前言本篇章主要介绍线性表中的循环双链表,并用Python实现其基本操作。1. 循环双链表循环双链表就是循环单链表和双链表的集合体了。2. 基本操作操作名称操作说明InsertInHead(val_list)头插法创建循环双链表InsertInTail(val_list)尾插法创建循环双链表IsEmpty()判断循环双链表是否为空LengthL...

weixin_39667509的博客 324

循环双链表及C语言实现

本文介绍循环双链表及C语言实现 目录循环双链表循环双链表的操作插入头节点插入尾节点插入指定位置插入删除头节点删除尾节点删除指定位置删除遍历查找循环双链表的C语言实现 循环双链表 循环双链表 循环双链表的操作 插入 头节点插入 尾节点插入 指定位置插入 删除 头节点删除 尾节点删除 指定位置删除 遍历 查找 循环双链表的C语言实现 ...

Jeaten 1130

实验二(3)用循环双链表实现对数据的基本操作

循环双链表的实现。

linxibo's CSDN 528

线性表之循环链表的建立、查找、插入和删除(附C++程序)

本文介绍了线性表中的循环链表,包括循环单链表、循环双链表的头插法和尾插法的建立,按元素查找,插入和删除操作。

ch18328071580的博客 3807

实现循环双链表各种基本运算的算法

#include &lt;stdio.h&gt; #include &lt;malloc.h&gt; #include &lt;stdbool.h&gt; typedef int ElemType; typedef struct DNode {     ElemType data;//数据域     struct DNode *prior;//指向前驱结点     struct DNode *n...

xiezhi123456的博客 2587

C语言之循环双链表

C语言之循环双链表

qq_43213240的博客 119

java实现循环双链表

/** * 循环双链表的简单实现 * * @author Linging * @date 2019/2/9 * * 注:java自带的集合包有实现双链表 */ public class DoubleList&amp;lt;T&amp;gt; { //表头 public DNode&amp;lt;T&amp;gt; head; //节点个数 private int Count; //定义节点结...

Linging_24的博客 1001

链表——循环单链表,循环双链表及静态链表

文章目录循环链表循环单链表循环双链表静态链表说明 循环链表  循环链表一般包括循环单链表和循环双链表,如下图所示: 循环单链表   循环单链表与单链表的区别在于,表中最后一个结点的指针不是NULL,而改为指向头结点,从而使整个链表形成一个环。   一般对循环单链表只设尾指针不设头指针,其原因是,如果设的是头指针,对表尾进行操作需要O(n)的时间复杂度,而若设的是尾指针r,那么r->next即为头指针,对表头与表尾进行操作都只需要O(1)的时间复杂度。  单链表与循环单链表:  详细的单链表操作请参

薛定谔的猫的博客 3880
上一篇: 求解约瑟夫问题
下一篇: 只出现一次的数字
onlynb
博客等级 码龄5年 2粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值