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

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

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

作者 YJ

单位 西南石油大学

编写3个函数,分别实现单链表(带头结点)的查询、插入、删除。

函数接口定义:

int  Get_LinkList(LinkList H, ElemType key);//H为单链表的头指针,key为待查找的值;
Status ListInsert(LinkList &H,int i,ElemType e);//H为单链表的头指针,i为插入位置,e为新插入的值;
Status ListDelete(LinkList &H,int i);//H为单链表的头指针,i为删除位置

裁判测试程序样例

#include<stdio.h>
#include<malloc.h>
#define MAXSIZE 30
#define  TRUE   1
#define  FALSE  0
#define  OK     1
#define  ERROR 0
#define  OVERFLOW  -1
typedef int Status;
typedef   int ElemType;
typedef struct LNode  /* 定义链式存储结构 */
{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;
int  Get_LinkList(LinkList H, ElemType key) ;//按值查询,找到则返回其位置,未找到则返回0
Status ListInsert(LinkList &H,int i,ElemType e);
Status ListDelete(LinkList &H,int i);
Status Creat_LinkList(LinkList &L)               /* 创建链式表 */
  {
    LinkList head,r,s;
    int k;
    head=(LinkList)malloc(sizeof(LNode));
    head->next=NULL;
    r=head;
    scanf("%d",&k);
    while(k>0)
    {
      s=(LNode *)malloc(sizeof(LNode));
      s->data=k;
      s->next=NULL;
      r->next=s;
      r=s;
      scanf("%d",&k);
    }
    L=head;
    return OK;
  }/* Creat_LinkList */
void Print_LinkList( LinkList H)     /* 输出链式表 */
{
    LNode *p;
    p=H->next;
    while(p!=NULL)
    {
        printf("%d ",p->data);
        p=p->next;
   }
   printf("\n");
  }/* Print_LinkList */


int  main()
  {
    ElemType key;
    LinkList L;
    int p,loc;
    Creat_LinkList(L);  //创建单链表
    Print_LinkList(L);   //输出单链表
    scanf("%d",&key);  //读入待查找的值
    p=Get_LinkList(L,key);  //
    printf("key在第%d位\n",p);
    scanf("%d%d",&key,&loc);  //输入要插入的值key以及位置loc
    ListInsert(L,loc,key);
    Print_LinkList(L);
    scanf("%d",&loc);//输入要删除元素的位置
    ListDelete(L,loc);
    Print_LinkList(L);
    return 0;
}

/* 请在这里填写答案 */

输入样例:

1 2 3 4 5 6 0
3
10 2
5

输出样例:

1 2 3 4 5 6 
key在第3位
1 10 2 3 4 5 6 
1 10 2 3 5 6 

接口函数实现:

int  Get_LinkList(LinkList H, ElemType key)
{
    LinkList p;
    int n = 0;
    p=(struct LNode*)malloc(sizeof(struct LNode));
    p = H;
    while(p!=NULL)
    {
        if(p->data == key)
            return n;
        n++;
        p = p->next;
    }   
}

Status ListInsert(LinkList &H,int i,ElemType e)
{
    int j;
    LinkList p=H,s;
    if(i<=0)
        return false;
    for(j=1;j<i;j++)
    {
        p = p->next;
    }
    if(p==NULL)
    {
        return false;
    }
    s=(struct LNode*)malloc(sizeof(struct LNode));
    s->data=e;
    s->next=p->next;
    p->next=s;
    return true;
}

Status ListDelete(LinkList &H,int i)
{
    int j;
    LinkList p=H,s;
    if(i<=0)
        return false;
    for(j=1;j<i;j++)
    {
        p = p->next;
    }
    if(p==NULL)
    {
        return false;
    }
    s=(struct LNode*)malloc(sizeof(struct LNode));
    s = p->next;
    p->next=s->next;
    free(s);
    return true;
}

数据结构之单链表 单链表详解一、前言二、什么是链表?2.1、链表的概念:2.2、两种重要的单链表2.3、关于单链表的一些基础知识三、单链表的实现3.1、穷举法创建一个简单的链表3.2、遍历链表3.3、得到链表的长度3.4、头插法3.5、尾插法3.6、 任意位置插入节点3.7、查找是否包含关键字key是否在单链表当中3.8、删除所有节点3.9、删除第一次出现关键字为key的节点3.10、删除所有值为key的节点四、LeetCode和剑指Offer上的单链表面试题五、其他练习题 一、前言 在上篇文章中,我们详细的讲解了顺序表, 阅读详情

相关推荐

(数据结构)1.实现顺序表的各种基本运算的算法 2.实现单链表的各种基本运算的算法

实验内容 1.编写一个程序sqlist.cpp,实现顺序表的各种基本运算和整体建表算法(假设顺序表的元素类型ElemType为char),并在此基础上设计一个程序exp2-1.cpp完成以下功能。 (1)初始化顺序表L。 (2)依次插入a、b、c、d、e元素。 (3)输出顺序表L。 (4)输出顺序表L的长度。 (5)判断顺序表L是否为空。 (6)输出顺序表L的第3个元素。 (7)输出元素a的位置。...

weixin_41032720的博客 2万+

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

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

a1833235073的博客 1605

python实现单链表 判空 长度 遍历 头插 尾插 插入 删除 范围查询 反转

提示: 是我尝试去复习的过程中, 思路的步骤, 看起来有点像草稿, 后期如果有空加上文字描述说明我的思考过程 在网上看了一些别的实现思路, 我觉得最难的其实是怎么去 抽象 我们要描述的 链表 等数据结构对象, 把它们根据在 内存中实际的存储方式 进行抽象. 这里最终是抽象成 Node 和 SingleLinkList 两个对象, 前者作为后者的 一个属性, 这属于 面向对象的多态. 最终, 暴露...

DefaultTest的 编程试验场 869

单链表的查找插入以及删除操作

单链表查找 算法思路: 声明一个节点 p 指向链表的第一个节点,初始化 j 作为计数器,从 1 开始 2. 当 j<i 的时候,遍历链表,让 p 不断向后移动,计数器 j+1 查找成功时,返回节点 当到了链表的末尾即 p 为空时,则说明第 i 个元素不存在(摘自灰灰考研) int getelem (LinkList &L,int i,Elemtypy &e){ int j=1; LinkList p; p=L->next; while(p&&a

wlj_czy的博客 1215

VS2015+C++实战:手把手教你用海康MVS里的Demo搞定多相机同步采图与保存

本文详细解析了在VS2015+C++环境下,利用海康威视MVS工业相机SDK实现多相机同步采图与保存的全流程。从环境准备、SDK选择到多相机初始化、同步采图方案,再到异常处理与性能优化,提供了实战技巧和代码示例,帮助开发者快速掌握工业相机二次开发的核心技术。

weixin_29170327的博客 272

配置 Druid 数据源及密码加密-SpringBoot 实战基础

在SpringBoot中配置 Druid 数据源及密码加密的方法前文集成 MyBatis Plus,实现了一组增删改查接口。在启动服务时,从控制台中可以看出 Spring Boot 默认使用 Hikari 作为数据库连接池,Hikari性能很优秀。在国内使用较多的连接池还属阿里开源的 Druid,中文发音为德鲁伊。Druid 结合了 C3P0、DBCP 等 DB 池的优点,同时还加入了日志监控,可以很好的监控 DB 池连接和 SQL 的执行情况。...

m0_67698950的博客 952

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

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

1113

10xGenomics官方可视化工具——Loupe Browser

Loupe Browser是⼀款10xGenomics开发的交互式桌⾯应⽤程序,⽤于探索10x单细胞数据,可以用来找出感兴趣的细胞、找出显著差异表达的基因、鉴定细胞类型、探索细胞亚类和数据共享。

weixin_47195452的博客 3308

C语言实现单链表删除

C语言实现单链表删除所有与条件相符的结点 删除链表的结点指若某结点数据域的值满足给定的条件,则将该节点删除。 删除链表结点有两个原则: (1)删除操作不应该破坏原链接关系。 (2)删除结点前,应该有一个删除位置的查找子过程。 在删除一个结点时可能遇到以下三种情况: (1)链表为空。此时不用做任何操作,直接返回。 (2)链表头就是要删除的结点。这时先用一个指针q暂存此结点,再将链表头指向下一结点,最...

weixin_43484734的博客 3万+

别再折腾环境了!Windows 11 + VSCode + CMake 3.31.4 + MinGW-w64 一键式配置指南(附常见报错解决)

本文提供Windows 11下VSCode、CMake 3.31.4和MinGW-w64的一键式配置指南,帮助开发者快速搭建高效C++开发环境。涵盖工具链选型、环境变量配置、项目初始化及常见报错解决方案,大幅提升开发效率。

weixin_28841265的博客 184

傅里叶光学(1)

傅里叶光学,可以看作是通信理论中傅里叶变换等一系列数学思想以及系统理论与光学(主要是衍射光学)相结合的产物关于傅里叶光学的应用领域,本节介绍了成像,当然事实上不可能仅限于成像,经典的还如激光散斑的一些应用,干涉计量,还有傅里叶变换光谱学等等。最后总结一下,傅里叶光学我认为可以看做一个工具,对于任意的系统,它能给出一些数学思想与物理原理进行解释和分析,找出系统的扰动和响应的关系,或者说根据扰动和响应,来研究或者设计一个系统。

m0_53607446的博客 1651

mysql数据库使用between and 的不包含右边界问题

最近在公司经常支持业务部门数据提取,遇到了一个提取时间间隔的问题,想到了between and比较方便, 之前经常用这个关键字,但是从来没思考过它的边界问题, 所以趁这次研究了一下,废话不多说, 直接上例子: ...

qq_32712809的博客 2万+

Windows安装Pytorch3d

pytorch和pytorch3d版本对应关系如下:https://github.com/facebookresearch/pytorch3d/releasescuda和NVIDIA CUB版本对应关系如下:https://github.com/NVIDIA/cub/releases?page=1本人配置如下:GPU:1050TiCUDA:11.1python:3.8。

Snakewood的博客 4282

数据结构基础--单链表的基本操作(创建,插入,删除和查找)C++

使用的头文件: #include<iostream> #include<malloc.h> using namespace std; 单链表的结构体定义: typedef struct LNode{ int data; LNode* next; }LNode,*Linklist; 插入操作: //在单链表的第i个位置插入元素e int insertLi...

沛竹君的博客 8929

【Python爬虫】股票信息定向爬取

【Python爬虫】股票信息定向爬取:通过requests-bs4-re技术路线爬虫获取上交所和深交所所有股票的名称和交易信息

qq_39321802的博客 1493

【Win10/11】Windows电脑WiFi显示小地球/断网的解决方法 Windows WiFi小地球、网络连接中断、网络重置、无线网卡驱动、Win10/Win11网络修复

最近经常有粉丝留言问我,Windows 电脑突然连不上 WiFi,右下角网络图标显示成了“小地球 🌐”,或者干脆提示“未连接 - 没有可用的连接”。明明其他设备网络都正常,唯独自己的电脑断了。作为在互联网大厂混迹多年的前端程序员,我自己也碰到过这个问题。总结几种比较常见、亲测有效的解决方法,写出来供大家参考,希望能帮你快速恢复上网!问题原因推荐解决方法系统设置错乱使用网络重置功能驱动异常或冲突卸载后重启自动安装驱动驱动版本过旧手动更新网卡驱动实在不行考虑使用系统还原点或重装系统这几个方法中,

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3822

python 操作单链表(插入、删除、遍历)

""" 单链表 1、计算长度操作 2、判断是否为空链表 3、头插法 4、尾插法 5、根据位置插入值 6、遍历链表 7、清空链表 8、根据位置删除链表值 9、根据值删除 10、链表逆序遍历 """ class Node(object): def __init__(self, value): self.value = value self.node = Non...

sxf_123456的博客 5738

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

线性表——单链表的魅力(1) 初始化、插入、删除和查询

1.单链表的存储结构 typedef int ElemType;// 定义数据类型,可根据需要进行其他类型定义 typedef struct Node { ElemType data;// 数据域,存放数据 ListNode* next;// 指向下一个链表节点 }ListNode, * LinkList; 2.单链表的初始化 void InitList(LinkList* L) { if ((*L = (LinkList)malloc(sizeof(ListNode))) == NULL)//为

wh1236666的博客 557

计算机控制技术及应用

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

链表学习---单链表的创建删除添加插入遍历

!。本文章用来学习记录,完全公开免费。原文章连接:https://blog.csdn.net/Czc1357618897/article/details/121619656?

weixin_50706721的博客 362

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

单链表的数据插入删除查询

## 数据结构——单链表的数据插入删除查询##二话不说,上代码/** * 命名空间: std * 功 能: 单链表的基本算法和链表的建立 * 类 名: * * Ver 变更日期2017.5.8 负责人 wall * ─────────────────────────────────── * V0.01 2017.5.8 Wall 王傲 初版 * * Copyright (c) 2017 Lir

wall_ll的博客 432

实验作业三:单链表

题目: 利用尾插法建立一个单链表,并从屏幕显示单链表元素列表;根据屏幕上的提示进行单链表的删除、插入等操作。 运行环境:Dev-C++ 5.11 下面是正式的代码,这里没有拆分成多个文件,直接堆在一起了。 /* 单链表程序 包含结构体: 1. 定义单链表结构(结点) 包含函数: 1. 获取链表的指定位置的结点 2. 创建一个单链表 3. 插入节点 4. 输出已有...

博客 1023

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

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

shopping.w 3356

数据结构 单链表 C++ 实现

单链表 单链表的定义 typedef int ElemType; typedef struct LNode { ElemType data; LNode *next; } LNode, *LinkList; 此处 LNode 强调一个结点,*LinkList 强调一个单链表的头指针,本例中只有头指针使用 *LinkList ; 单链表的头指针和头节点 若单链表没有头节点,那么单链表的头指针则指向链表的第一个元素;若由头节点,头指针指向头节点;例如头指针为 L;如果链表为空,则有 L ==

axyzstra 的博客 3718

单链表操作

链表的基本介绍和单链表的实现

wo418xs的博客 651

Python数据结构-----链表1.0(单链表的增删改查以及反转)

详细讲解Python中链表的操作,增删改查以及实现链表的转置输出,快来看快来看快来看快来快来看!!!!!

m0_73633088的博客 2107

【C语言数据结构】之单链表

本文主要介绍C语言数据结构之单链表的增删改查。我们主打一个手搓代码,讲的天花乱坠不如自己敲出来。

weixin_61276540的博客 1021
上一篇: 6-7 表尾插入法构造链表
下一篇: 6-9 两个非递减的有序链表合并 - 人邮DS(C 第2版)线性表习题2(2)
新三晴
博客等级 码龄5年 78粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新三晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值