单链表的查找、插入与删除

单链表的查询,插入,删除 单链表的查询,插入,删除题目正文总结 题目正文 线性表的查询,插入,删除,查询分为按下标(逻辑序号)查询,以及按元素值查询 代码如下: #include<stdio.h> #include<iostream> #include<malloc.h> using namespace std; typedef struct LNode { int data; struct LNode *next; }LinkNode; void CreateListF(Lin 阅读详情

单链表(不带头结点)

插入
1.在第一个结点前插入

newnode->link=first;
first=newnode;

请添加图片描述

2.在链表中间插入

newnode->link=p->link;
p->link=newnode;

请添加图片描述

3.在链表末尾插入

newnode->link=p->link;
p->link=newnode;

请添加图片描述
插入元素代码如下:

bool insert(linklist&first,datatype x,int i)
{
	linknode *newnode;
	newnode=(linknode*)malloc(sizeof(linknode));
	newnode->data=x;
	if(first==NUll||i==1) 
	{
		newnode->link=first;
		first=newnode;
	}
	else
	{
		linknode *p=first,*pr;
		int k=1;
		while(p!=NULL&&k<i-1)
		{
			pr=p;
			p=p->link;
			k++;
		}//寻找第i-1个结点 
		if(p==NULL&&first!=NULL)
		p=pr;//链太短,插在链尾 
		newnode->link=p->link;
		p->link=newnode;
	}
	return true; 
}

删除
1.删除表中第一个元素

2.删除表中或表尾元素
代码如下:

bool remove(linknode&first,int i,datatype&x)
{
	//删除第i个结点并返回值 
	int k;
	linknode *p,*q;
	if(i==0)
	return false;
	if(i==1)
	{
		q=first;
		first=first->link;
	}
	else
	{
		p=first;
		int k=1;
		while(p!=NULL&&k<i-1)
		{
			p=p->link;
			k++
		}
		if(p==NULL||p->link==NULL)
		{
			printf("链太短,无可删除结点");
			return false; 
		}
		else{
			q=p->link;
			p->link=q->link; 
		}
		x=q->data;
		free(q);
		return true;
	}
}

单链表(带头结点)

头结点位于表的最前端,本身不带数据,仅仅标志表头。
设置头结点的目的是统一空表与非空表的操作,简化链表操作的实现。
插入
1.前插法建立单链表
从一个空表开始,重复读入数据:
生成新节点,将读入数据存放到新节点的数据域中,将该新节点插入到链表的前端。直到读入结束符为止。请添加图片描述
代码如下:

void insertfront(linklist&first,datatype endtag)
{
	datatype val;
	linknode *s;
	scanf("%d",&val) //读入数据
	while(val!=engtag) 
	{
		s=(linknode *)malloc(sizeof(linknode));
		s->data=val;
		s->link=first->link;
		first->link=s;
		scanf("%d",&val);
	}
}

2.后插法建立单链表
每次将新结点加插到链表的链尾;
设置一个尾指针r,总是指向最后一个结点,新结点插到他后面,尾指针初始时指向表头结点位置。
请添加图片描述
代码如下:

void insertrear(linklist&first,datatype endtag)
{
	datatype val;
	linknode *s,*rear=first;
	scanf("%d",&val) //读入数据
	while(val!=engtag) 
	{
		s=(linknode *)malloc(sizeof(linknode));
		s->data=val;
		rear->link=s;
		rear=s;
		scanf("%d",&val);
	}
	rear->link=NULL;
}

查找
按值查找

linknode *search(linklist first,datatype x)
{
	linknode *p=first->link;
	while(p!=NULL&&p->data!=x)
	{
		p=p->link;
	}
	return p;
}

上面代码中while循环条件p!=NULL与p->data!=x不能错位,否则当p=NULL时,p->data会发生错误。

按序号查找

linknode *locate(linklist first,int i)
{
	if(i<0) return NULL;
	linknode *p=first;
	int k=0
	while(p!=NULL&&k<i)
	{
		p=p->link;
		k++;
	}
	return p;
}
单链表上基本操作的实现——建立,插入,查找,删除,表长。 本文是对单链表的基本操作的学习——包括单链表的建立,删除,插入,查找,等等操作。有些操作好将带头结点单链表和不带头结点单链表均都实现了代码复现!值得一看! 阅读详情

相关推荐

单链表及循环单链表的建立、查找、插入、删除

2.1单链表的建立 1.建立一个带头结点的单链表:L={12,13,21,24}。数据元素的值由键盘输入。 2.实验要点及说明 单链表的建立有头插入法和尾插入法。本实验以尾插法为例建立单链表。单链表的结点结构除了数据域外,只含有一个指针域。注意:头结点的建立方法,新元素的插入的位置及指针的变化。单链表的建立示意图: #include <stdio.h> #include <conio.h> #include <stdlib.h> #define OK 1 #define

xiahuayong的博客 4449

6-8 单链表的查询插入删除

/H为单链表的头指针,key为待查找的值;//H为单链表的头指针,i为插入位置,e为新插入的值;//H为单链表的头指针,i为删除位置。

m0_62351105的博客 1337

c语言实现单链表的插入删除和查找

#include<stdlib.h> #include<stdio.h> typedef struct LNode{ int data; struct LNode *next; }LNode,*LinkList; LinkList CreateList_L(LinkList L) { //创建链表 int n; scanf("%d", &n); L->next = NULL; LNode * p; for (int i = 0; i < n; i++) { p =

m0_51835877的博客 1377

单链表(带头结点)——建立、查找、插入、删除、销毁等操作的代码实现(王道版)

单链表(带头结点)建立、查找、插入、删除、销毁等操作的代码实现(王道版)

a1833235073的博客 1605

单链表的创建、查找、插入与删除

单链表:

fakerth的博客 4536

单链表的查找销毁,指定位置的插入删除

本文承接上篇对单链表的构建和删除插入,将要详细讲述有关单链表的查找销毁,以及如何在指定位置附近对数据进行添加和删除,本文中会用到上一篇blog中的相关函数,忘记的友友可以到上一篇查看~必看:本文中所有代码的具体实现都可以在首页的gitee链接中免费查看获取!!!本文总结了单链表查找销毁,指定位置删除插入的一系列操作,如果有任何更好的方法和建议欢迎大家在评论区下方留言。

wxhdvd的博客 1703

C语言实现单链表的头插、尾插、删除、插入、查询操作

效果图 编译工具: 代码: #pragma clang diagnostic push #pragma ide diagnostic ignored "cert-err34-c" /********************************************* * 单链表的实现 **************************************...

1113

SPSS_Process—简单&平行&链式中介模型

本篇文章介绍采用SPSS的插件Process对简单中介、链式中介、平行中介模型进行检验的操作方法及结果解读。

m0_54401011的博客 4万+

【数据结构】单链表的创建、插入、删除及合并

1)编写函数,创建一个带头结点的单链表(数据自拟);2)编写函数,在单链表的指定位置插入一个元素;3)编写函数,在单链表的指定位置删除一个元素;4)编写函数,将两个有序链表合并成一个新的有序链表;

Jesonary的博客 4742

MS1030超声波流量计电路实战:如何用15ps精度优化水表设计(附配置代码)

本文深入探讨了如何利用MS1030超声波流量计芯片实现15ps高精度测量,以优化水表设计。文章从系统误差分配出发,详细解析了硬件电路设计要点、SPI通信配置及核心优化技巧,如利用可编程偏置电压和8回波累加功能来提升抗干扰能力与测量稳定性,并附有实用的配置代码示例。

svm4gardener的博客 317

mpu6050原理图_STM32控制 MPU6050 六轴陀螺仪资料汇总

一般使用MPU6050的步骤是先驱动I2C总线,然后初始化MPU6050,从MPU6050读取数据,最后是数据的处理。本文档详细介绍有关MPU6050 三维角度传感器电子陀螺仪使用说明。附件内容提供该 MPU6050模块原理图,配套STM32代码,相关数据手册及参考文档。实物连接图:MPU6050 六轴陀螺仪特点:使用芯片:MPU-6050供电电源:3-5v(内部低压差稳压)通信方式:标...

weixin_39911056的博客 4750

单链表的创建,插入,删除以及查找

链表是一种物理存储单元上非连续、非顺序的存储结构,由一系列结点组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

Lookdrama的博客 4万+

【机器学习】图神经网络(NRI)模型原理和运动轨迹预测代码实现

NRI模型利用VAE和GNN从观测数据中学习系统动态和交互图,展现出在无监督学习、图结构建模、多步预测和连续松弛方面的强大能力。未来工作可探索动态图结构学习、应用于更复杂系统、提高模型泛化能力和计算效率,以及与其他模型的结合。NRI作为新兴的图神经网络方法,在理解和预测相互作用系统方面潜力巨大,有望在各领域发挥重要作用。

MUKAMO的博客 2772

C语言实现单链表创建、删除、查找、插入

本文将详细的介绍C语言单链表的创建、删除、查找、插入以及输出功能一、创建#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; typedef int ElemType; /*结构体部分*/ typedef struct Node { ElemType data; //数值域 struct Node *next; //指针域 }Li...

qq_36806987的博客 3万+

自监督学习原理与代码实战案例讲解

自监督学习原理与代码实战案例讲解 作者:禅与计算机程序设计艺术 1. 背景介绍 1.1 自监督学习的起源与发展 1.1.1 监督学习的局限性

AI天才研究院 615

损失函数大汇总(六十一)(Signed Distance Map Loss附公式推导与代码)

摘要 本文介绍了Signed Distance Map (SDM) Loss,一种将形状先验直接融入分割任务的方法。SDM将每个像素表示为到目标边界的带符号距离(内部为负,外部为正),相比二值mask能更连续地表达形状几何信息。SDM Loss的核心思想是让网络学习这个隐式形状场,通过可微的Heaviside函数近似将SDM转换为分割结果。文中重点分析了一种product-based regression loss,它能同时关注距离数值和内外符号的正确性,对边界区域尤为敏感。SDM Loss通常与传统的分割

悦学共鸣,温柔以待,汇聚光芒,共同成长 181

单链表的初始化,建立,插入,查找,删除。

//单链表的初始化,建立,插入,查找,删除。 #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; typedef int ElemType; //////////////////////////////////////////// //定义结点类型 typedef struct Node { ElemType...

YIU 1万+

ESP32 双雷达融合盲区车辆接近预警系统设计与实现

/ 超声波传感器引脚// 触发引脚// 回声引脚// 预警模块引脚// 蜂鸣器引脚// LED引脚// 串口配置(毫米波雷达用UART2)#define BAUD_RATE 115200 // 雷达串口波特率(IWR6843默认配置)// 预警阈值(可根据实际需求调整)// 高危区阈值(3m)// 预警区阈值(10m)// 传感器数据存储// 毫米波雷达距离(m)// 毫米波雷达速度(km/h)// 超声波距离(m)// 融合后距离(m)

weixin_42300449的博客 742

【单链表】初始化、插入、删除、查找

单链表基本操作

qq_52639249的博客 2135

基于 Simulink 的三相四线制整流器在三相不平衡负载下的中点电位平衡控制实战教程。

本文介绍了三相四线制整流器在不平衡负载下的中点电位平衡控制方法。首先分析了中点电位漂移的物理机理和控制策略(零序电压注入)。接着详细讲解了Simulink建模步骤:搭建三相四线制主电路、设计平衡控制算法、实现PWM调制。通过对比有无平衡控制的仿真结果,验证了控制方法的有效性。最后提供了工程建议:零序注入需限幅、考虑中性线寄生电感影响、采用稳健的PI参数。该方案能有效抑制中点电位波动,保障三电平系统在不平衡工况下的稳定运行。

MHD0815的博客 55

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

单链表建立,插入,删除,查找,遍历操作

单链表建立,插入,删除,查找,遍历操作 // Link.cpp : 定义控制台应用程序的入口点。 //单链表 #include "stdafx.h" #include #include using namespace std; typedef struct node { int data;//节点内容 node *next;//下一个节点 }node; //创建单链表 node *c

晴天的专栏 5247

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

单链表的定义,插入与删除,查找,建立。

链表分为:单链表,双链表,循环链表,静态链表 一,单链表的定义 在内存空间中,各个节点在逻辑上相邻,但在物理上不相邻。 在单个的结点内部需要存放 数据域 和 指针域(存放指向下一个结点的指针) 优点:不要求一大片连续空间,改变容量方便 缺点:不可随机存取,要耗费一定的空间存放指针。 定义 typedef struct LNode{ //定义单链表结点类型 int data; //每个节点存放一个数据元素 struct LN...

liyulin90的博客 4180

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

单链表的的建立、插入、删除和查找(附完整代码)

线性表的链式存储又称单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素。为了建立数据元素之间的线性关系,对每个链表结点,除存放元素自身的信息之外,还需要存放一个指向其后继的指针。

2401_84024302的博客 2507

数据结构C语言 单链表(插入、删除、查找)

数据结构C语言 单链表(插入、删除、查找) 1、插入 假设_A_的临时指针为 “p” ,C_的临时指针为 “q“。 步骤1: _ 删除这条连接线; 步骤2: 将p->next给q->next; 步骤3: 将q给p->next; 插入代码 q->next = p->next; p->next = q; 2、删除 假设_A_的临时指针为 “p” ,_B_的临时指针为 “q“。 步骤1: 删除这条连接线; 步骤2: 删除这条连接线; 步骤3: 将p->next给q,接着

更多资料私我 7496

单链表——单链表的定义及基本操作(初始化、头插法尾插法建表、查找、插入、删除、判空等)

文章目录单链表的定义单链表上的操作初始化建立单链表头插法建立单链表尾插法建立单链表遍历单链表求单链表的长度查找操作按值查找按位查找插入操作删除操作完整代码及实例 单链表的定义   由于顺序表的插入删除操作需要移动大量的元素,影响了运行效率,因此引入了线性表的链式存储——单链表。单链表通过一组任意的存储单元来存储线性表中的数据元素,不需要使用地址连续的存储单元,因此它不要求在逻辑上相邻的两个元素在物理位置上也相邻。   单链表的特点: 单链表不要求逻辑上相邻的两个元素在物理位置上也相邻,因此不需要连续的存储

薛定谔的猫的博客 10万+

单链表的插入删除,查找,建立

1.按位序插入: 带头节点的,定义指针P指向头节点,头节点是第0个节点,然后定义j表示当前p指向的是第几个节点,通过循环找到第i-1个节点,然后在第i个节点上插入元素e,具体插入过程是开辟一个节点的内存空间,指针s指向这个内存空间,将插入元素e放入此内存,然后将P节点的指针(指向P节点的下一节点的指针)给到s节点的指针,使得s节点的指针指向下一节点,然后将p节点的指针指向s节点。注意这个过程不能反了。 平均时间复杂度是o(n),不能插入到不存在的位置。 不带头节点的,插入第一个节点的操作和其他节点不.

qq_36849855的博客 1026
上一篇: 顺序表的查找、插入、删除
下一篇: 求解约瑟夫问题
onlynb
博客等级 码龄5年 2粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值