单链表插入与删除数据

2023-10-26

 

  1 //按元素大小顺序插入到链表中
  2 #include<stdio.h>
  3 #include<stdlib.h>
  4 #include<string.h>
  5 
  6 struct Node
  7 {
  8     int value;
  9     struct Node *next;
 10 };
 11 
 12 void insertNode(struct Node **head, int value)
 13 {
 14     struct Node *previous;
 15     struct Node *current;
 16     struct Node *newnode;
 17 
 18     current = *head;
 19     previous = NULL;
 20     
 21     
 22     while (current != NULL && current->value < value)
 23     {
 24         int b = current->value;
 25         previous = current;        //previous记录current上一个节点的位置
 26         current = current->next;
 27     }
 28     newnode = (struct Node *)malloc(sizeof(struct Node));//分配内存
 29     if (newnode == NULL)
 30     {
 31         printf("内存分配失败!");
 32         exit(1);
 33     }
 34     newnode->value = value;
 35     newnode->next = current;
 36     if (previous == NULL)
 37     {
 38         *head = newnode;
 39     }
 40     else
 41     {
 42         previous->next = newnode;
 43     }
 44     
 45 }
 46 
 47 void printNode(struct Node *head)
 48 {
 49     struct Node *current;
 50     current = head;
 51     while (current != NULL)
 52     {
 53         printf("%d ", current->value);
 54         current = current->next;
 55     }
 56     printf("\n");
 57 }
 58 
 59 void deleteNode(struct Node **head, int value)
 60 {
 61     struct Node *previous;
 62     struct Node *current;
 63 
 64     current = *head;
 65     previous = NULL;
 66 
 67     while (current != NULL && current->value != value)
 68     {
 69         previous = current;
 70         current = current->next;
 71     }
 72     if (current == NULL)
 73     {
 74         printf("找不到匹配的节点\n");
 75         return;
 76     }
 77     else
 78     {
 79         if (previous == NULL)
 80         {
 81             *head = current->next;
 82         }
 83         else
 84         {
 85             previous->next = current->next;
 86         }
 87         free(current);
 88     }
 89 }
 90 int main()
 91 {
 92     struct Node *head = NULL;
 93     int input;
 94     printf("开始测试插入整数...\n");
 95     while (1)
 96     {
 97         printf("\n请输入一个整数(-1表示结束):");
 98         scanf("%d", &input);
 99         printf("\n");
100         if (input == -1)
101         {
102             break;
103         }
104         insertNode(&head, input);
105         printNode(head);
106     }
107 
108     printf("开始测试删除整数...\n");
109     while (1)
110     {
111         printf("\n请输入一个整数(-1表示结束):");
112         scanf("%d", &input);
113         printf("\n");
114         if (input == -1)
115         {
116             break;
117         }
118         deleteNode(&head, input);
119         printNode(head);
120     }
121 
122     return 0;
123 }

转载自:khq溪风

 

转载于:https://www.cnblogs.com/hsy1941/p/11505172.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单链表插入与删除数据 的相关文章

  • 五大常用经典算法

    五大常用算法之一 分治算法 一 基本概念 在计算机科学中 分治法是一种很重要的算法 字面上的解释是 分而治之 就是把一个复杂的问题分成两个或更多的相同或相似的子问题 再把子问题分成更小的子问题 直到最后子问题可以简单的直接求解 原问题的解即
  • Mysql 数据库

    数据库基础 1 什么是数据库 用来存储数据 数据库可在硬盘及内存中存储数据 数据库与文件存储数据的区别 数据库本质也是通过文件来存储数据 数据库的概念就是系统的管理存储数据的文件 数据库介绍 本质就是存储数据的C S架构的socket套接字
  • netty handler的执行顺序(3)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 今天解决2个问题 1 handler在pipeline当中究竟是如何存储的 2 在遍历handler的过程中 会根据event的不同 调用不同的handler 这一点是如何
  • 直线检测方法—LSD论文翻译

    附原文链接 LSD a Line Segment Detector 摘 要 LSD是一个线段检测器 能够在线性时间内得到亚像素级精度的检测结果 它无需调试参数就可以适用于任何数字图像上 并且能够自我控制错误数量的检测 平均来说 一个图像中允
  • 白盒测试相关的一些知识

    在白盒测试中 可以使用各种测试方法进行测试 下面这篇文章 可能比较枯燥 如果不乐意读 可以先收藏 如果在你的工作中真遇到白盒测试的话 可以回过头再来看看 还是值得读一读 一般来说 白盒测试时要考虑以下5个问题 1 测试中尽量先用自动化工具来
  • Qt——用于表格QTableView的模型

    如果想使用表格来呈现数据 Qt提供了一个方便的部件QTableWidget 但是直接用它实现一些功能可能比较困难 这里将介绍一种强大 灵活的方式来操作表格 一 模型 视图架构 在这个架构中 模型用于存储数据 视图用于呈现数据 除此之外 还有
  • Hash table and application in java

    查找的效率取决于在查找是比较的次数 次数越少效率越高 反之越低 最理想的情况是无需比较 一次存取便能找到所查找的记录 根据对应关系f找到给定值K的像f K hash function 应运而生 由此思想建的表称为hash table 集合h
  • 链表和线性表的优缺点

    链表和线性表的优缺点 作为我们最先接触的两个数据结构 链表和线性表的优缺点都较为明显 并且二者互相补足 文章目录 链表和线性表的优缺点 线性表 线性表的组成 线性表的缺点 线性表的优点 链表 链表的组成 链表的优点 链表的缺点 总结 线性表
  • 微软2013暑假实习生笔试题

    自己mark一下 以作后备 下面提交原文链接 原文博客 部分题目答案不确定 会持续更新 1 Which of the following calling convention s support s supportvariable leng
  • 数据结构与算法学习总结(六)——字符串的模式匹配算法

    基本概念 字符串是一种特殊的线性表 即元素都是 字符 的线性表 字符是组成字符串的基本单位 字符的取值依赖于字符集 例如二进制的字符集为0 1 则取值只能为 0 1 再比如英语语言 则包括26个字母外加标点符号 例如 abcde 就是一个字
  • Python 实现列队

    1 列队定义 队列是项的有序结合 其中添加新项的一端称为队尾 移除项的一端称为队首 当一个元素从队尾进入队列时 一直向队首移动 直到它成为下一个需要移除的元素为止 最近添加的元素必须在队尾等待 集合中存活时间最长的元素在队首 这种排序成为
  • 『Python基础-15』递归函数 Recursion Function

    什么是递归函数 一种计算过程 如果其中每一步都要用到前一步或前几步的结果 称为递归的 用递归过程定义的函数 称为递归函数 例如连加 连乘及阶乘等 凡是递归的函数 都是可计算的 即能行的 递归就是一个函数在它的函数体内调用它自身 编程语言中的
  • 数据结构之图的两种遍历实现(C语言版)

    上一期文章分享完了图的两种遍历方式 也是两种很重要的算法 DFS和BFS 这两种算法的应用和重要性我就不多说了 内行的人懂的都懂 今天这文章重要就是来上机实现这两种算法 又由于这两种算法都可以由邻接矩阵和邻接表来表示 博主分享的代码都是上机
  • 图 - Java实现无向带权图的邻接矩阵表示法

    图 Java实现无向带权图的邻接矩阵表示法 1 图 1 1 图的介绍 图 Graph 是一种复杂的非线性表结构 图中的元素我们就叫做顶点 vertex 图中的一个顶点可以与任意其他顶点建立连接关系 我们把这种建立的关系叫做边 edge 跟顶
  • 数据结构——计算节点个数和二叉树高度(C语言版)

    摘自 数据结构 计算节点个数和二叉树高度 C语言版 作者 正弦定理 发布时间 2020 12 12 23 27 09 网址 https blog csdn net chinesekobe article details 111086664
  • 数据结构与算法-列表(双向链表)设计及其排序算法

    0 概述 本文主要涵盖列表 双向链表 的设计及其排序算法的总结 列表是一种典型的动态存储结构 其中的数据 分散为一系列称作节点 node 的单位 节点之间通过指针相互索引和访问 为了引入新节点或删除原有节点 只需在局部调整少量相关节点之间的
  • 数理统计知识整理——回归分析与方差分析

    题记 时值我的北科研究生第一年下 选学 统计优化 课程 备考促学 成此笔记 以谨记 1 线性回归 1 1 原理分析 要研究最大积雪深度x与灌溉面积y之间的关系 测试得到近10年的数据如下表 使用线性回归的方法可以估计x与y之间的线性关系 线
  • 数组实现循环队列(增设队列大小size)

    目录 一 前言 1 如何实现循环 2 如何判断队列为空 3 如何判断队列为满 二 循环队列的结构定义 三 循环队列的创建及其初始化 四 入队 五 出队 六 取队头元素 七 取队尾元素 八 循环队列判空 九 循环队列判满 十 循环队列销毁 一
  • C++ AVL树(四种旋转,插入)

    C AVL树 四种旋转 插入 一 AVL树的概念及性质 二 我们要实现的大致框架 1 AVL树的节点定义 2 AVL树的大致框架 三 插入 1 插入逻辑跟BST相同的那一部分 2 修改平衡因子
  • 高精度运算合集,加减乘除,快速幂,详细代码,OJ链接

    文章目录 零 前言 一 加法 高精度加法步骤 P1601 A B 二 减法 高精度减法步骤

随机推荐

  • CSS——float浮动属性

    float浮动 div1 width 100px height 100px background red float left div2 width 300px height 300px background blue float righ
  • Unity界面插件NGUI基础教程

    一 创建你的界面 1 创建一个新场景 2 选择并删除场景里的MainCamera 3 在NGUI菜单下选择Create a New UI 会打开UI创建向导 4 在创建向导中你能更改UI的基本参数 现在我们选Default layer 点击
  • Python工业项目实战 05:数仓事实层DWB层构建

    知识点01 课程回顾 项目中有哪些主题域 服务域 工单主题 安装主题 客户域 客户事主题 仓储域 物料主题 运营域 工时主题 市场域 工单主题 项目中有哪些核心维度 时间维度 地区维度 油站维度 服务站点维度 组织机构维度 物流维度 仓库维
  • 操作系统 --- 进程通信 IPC Inter Process Communication

    操作系统 进程通信 IPC Inter Process Communication 为什么需要进程通信 进程通信的方法 pipeline 什么是pipeline shell中的pipe 创建过程 pipe的同步机制 实现pipe通信 sys
  • SecureCRT向Linux系统传送和接收文件

    SecureCRT向Linux系统传送和接收文件 SecureCRT支持Xmodem Ymodem和Zmodem协议 只需要简单的一个小工具配合命令就可以实现很方便的文件传输 以前上课见老师用过 今天自己搭了个linux服务器做驱动开发 要
  • flutter开启http服务,可用于投屏,或者对外提供接口

    var httpServer await HttpServer bind InternetAddress anyIPv4 8081 shared true httpServer listen HttpRequest request asyn
  • BUCT OJ 1711: 错位排序

    题目描述 给定整数 n 1 lt n 6 编写程序以字典序列出n的所有错位排列序列 所谓字典序即升序 所谓错位排列指在数j不能在数列中第j个位置 输入 输入包括多行 每行一个整数n 输出 每行输出一种排列 每行数字以空格相隔 以回车换行 样
  • Matlab plotyy画2个纵坐标不同的图

    目录 plotyy函数可以绘制双纵坐标的二维图 具体用法总结如下 1 如何设置双坐标 2 如何设置线型 3 加注图例 plotyy函数可以绘制双纵坐标的二维图 具体用法总结如下 1 plotyy X1 Y1 X2 Y2 以左 右不同纵轴绘制
  • 创建repo报错

    doesn t match any of the locations specified by path repo because this setting is empty 这个错误的原因所有的master和data都要配置一个path
  • 十分钟学会开发自己的Python AI应用【OpenAI API篇】

    最近 OpenAI 宣布 ChatGPT 将很快推出他们的 API 虽然我们不知道这需要多长时间 但这之前我们可以熟悉下OpenAI API 快速开发自己的AI应用 通过今天学习 OpenAI API 你将能够访问 OpenAI 的强大模型
  • python在获取网络状态时连接尝试失败应该怎么办

    如果 Python 在获取网络状态时连接尝试失败 可以采取以下措施 对检查网络连接状态 检查是否有其他设备或程序正在使用网络 确保网络连接正常 检查目标网站是否存在 如果目标网站不存在或正在维护 连接将失败 使用代理服务器 如果您的网络有限
  • 数据分析毕业设计 大数据商城人流数据分析与可视化 - python

    文章目录 0 前言 课题背景 分析方法与过程 初步分析 总体流程 1 数据探索分析 2 数据预处理 3 构建模型 总结 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求 这两
  • npm ERR! code EPERM npm ERR! syscall open npm ERR! path D:\Program Files\nodejs\npm_packages\_cacach

    问题描述 npm ERR code EPERM npm ERR syscall open npm ERR path D Program Files nodejs npm packages cacach 问题截图 问题原因 因为nodojs的
  • Kaldi 编译问题

    今天编译Kaldi 总是冒出 Could not find any libraries usr local lib liblapack liblapack atlas libclapack that seem to be an ATLAS
  • MySQL编码设置方法 MySQL编码为utf8设置方法

    mysql的默认编码是拉丁 我每次JSP制作网页用insert语句插入数据库时汉字都会显示成问号 安装mysql后 启动服务并登陆 使用show variables命令可查看mysql数据库的默认编码 由上图可见database和serve
  • 前端学习————css实现简单登录页面

    css实现简单登录页面 一 页面展示 二 思路 1 设置背景图片 2 设置登录框框并使其处于靠右位置 3 设置登录框框内容 三 代码展示 1 HTML 2 css 一 页面展示 二 思路 1 设置背景图片 2 设置登录框框并使其处于靠右位置
  • matlab cftool光滑曲线导出为什么就不光滑了_MATLAB

    0 前言 数据可视化 data visualization 技术指的是运用计算机图形学和图像处理技术 将数据转换为图形或图像在屏幕上显示出来 并进行交互处理的技术 它涉及计算机图形学 图像处理 计算机辅助设计 计算机视觉及人机交互技术等多个
  • 常用电磁屏蔽材料介绍及技术指标

    其实在电子设备工作时 其内部及外部会存在各种电磁干扰 这些干扰会影响到设备的正常工作 通常 电子设备工作时对外界的干扰强度及其自身抗外界干扰的能力 我们将其称之为电磁兼容 电磁兼容 Electromagnetic Compatibility
  • arduino字符串处理函数charAt()提取字符

    语法 String charAt n 参数 n 字符串中的第几个字 返回值 char 功能 获取字符串中的某一个字符 字符的位置即n的位置 String str hello 定义一个字符对象 Char s str charAt 3 取对象里
  • 单链表插入与删除数据

    1 按元素大小顺序插入到链表中 2 include