单向链表的数据存储(申请堆空间)
函数功能:
0.排序(逆置和顺序排序) 1.回显 2.头插 3.位插 4.尾插 5.尾删 6.头删
7.位删 8.查找 (按值或按位查找) 9.修改 (按值或按位修改) 10.退出
main.c
#include "link.h"int main()
{link_p H = link_create();if(NULL == H)printf("申请失败");else{int i;do{printf("0.排序\t1.回显\t2.头插\t3.位插\t4.尾插\t5.尾删\n");printf("6.头删\t7.位删\t8.查找\t9.修改\t10.退出\n");printf("请输入指令选项:");scanf("%d", &i);switch(i){case 0: link_short(H);break;case 2: head_add(H);break;case 1: link_show(H);break;case 3: idex_inset(H);break;case 4: tail_add(H);break;case 5: tail_delete(H);break;case 6: head_delete(H);break;case 7: idex_delete(H);break;case 8: idex_find(H);break;case 9: idex_change(H);break;case 10: link_delete(H);printf("已退出\n");break;}}while(10!= i);}
}
link.c
#include "link.h"//create link head
link_p link_create()
{link_p H = (link_p)malloc(sizeof(link));if(NULL == H){printf("失败");return NULL;}H -> len = 0;printf("申请成功\n");return H;
}//创建数据结点
link_p link_node()
{link_p p = (link_p)malloc(sizeof(link));if(NULL == p){printf("失败");return NULL;}printf("请输入数据结点存储的值:");scanf("%d", &p -> data);p -> next = NULL;return p;
}//头插
void head_add(link_p H)
{link_p in = link_node();in -> next = H -> next;H -> next = in;H -> len++;
}//尾插
void tail_add(link_p H)
{//创建结点link_p p = link_node();//将结点链接到尾部link_p q = H;for(int i = 0; i < H -> len; i++)q = q -> next;q -> next = p;H -> len++;
}//位插
void idex_inset(link_p H)
{//输入位置,判断是否能进行插入操作printf("位置:");int num;scanf("%d", &num);if(num < 1 || num > H -> len + 1){printf("插入失败");return;}//找到插入位置的前一个结点link_p q = H;for(int i = 0; i < num - 1; i++)q = q -> next;//创建结点链接到尾部 link_p p = link_node();p -> next = q -> next;q -> next = p;H -> len++;
}//头删
void head_delete(link_p H)
{if(empty(H)){printf("空");return;}link_p p = H -> next;H -> next = p -> next;H -> len--;free(p);p = NULL;}//尾删
void tail_delete(link_p H)
{if(empty(H)){printf("空");return;}link_p q = H;for(int i = 0; i < H -> len - 1; i++)q = q -> next;//找到倒数第二个数据的地址link_p p = q -> next;q -> next = p -> next; H -> len--;free(p);p = NULL;
}//位删
void idex_delete(link_p H)
{printf("位置:");int num;scanf("%d", &num);if(empty(H) || num > H -> len || num < 1){printf("空");return;}link_p q = H;for(int i = 0; i < num - 1; i++)q = q -> next;link_p p = q -> next;q -> next = p -> next;H -> len--;free(p);p = NULL;
}//查找
link_p idex_find(link_p H)
{if(empty(H)){printf("空");return NULL;}printf("1.按位查找\t2.按值查找\n请输入你的选项:");int n;scanf("%d", &n);switch(n){case 1:printf("位置:");scanf("%d", &n);if(n > H -> len || n < 1){printf("空");return NULL;}link_p q = H;for(int i = 0; i < n; i++)q = q -> next;return q;case 2: printf("请输入查找的值");datatype data;scanf("%d", &data);link_p p = H -> next;do{if(p -> data == data){printf("%p\n", p);return p;}p = p -> next;}while(p != NULL);printf("没有你要查找的值\n");}
}//修改
void idex_change(link_p H)
{if(empty(H)){printf("空");return;}printf("1.按位修改\t2.按值修改\n请输入修改选项:");int i;scanf("%d", &i);switch(i){case 1:printf("位置:");int num;scanf("%d", &num);if(empty(H) || num > H -> len || num < 1){printf("空");return;}link_p q = H;for(int i = 0; i < num; i++)q = q -> next;printf("请输入修改后的值:");scanf("%d", &q -> data);link_show(H);break;case 2:if(empty(H)){printf("空");return;}printf("请输入需要修改的值");datatype data;scanf("%d", &data);link_p p = H -> next;for(int i = 0; i < H -> len; i++){if(p -> data == data){printf("请输入修改后的值:");scanf("%d", &p -> data);return;}p = p -> next;}printf("没有你要修改的值");}
}//排序
void link_short(link_p H)
{if(empty(H)){printf("空");return;}printf("1.顺序排序\t2.逆置\n请输入你的选项:");int n, m, i;scanf("%d", &n);link_p q = H -> next;m = H -> len; datatype arr[m];switch(n){case 1:for(int i = 0; i < H -> len - 1; i++){link_p p = q -> next;for(int j = i + 1; j < H -> len; j++){if(q -> data > p -> data)p -> data = q -> data + p -> data - (q -> data = p -> data);p = p -> next;}q = q -> next;}break;case 2:i = 0;n = H -> len; q = H -> next;do{arr[i] = q -> data;i++;q = q -> next;}while(q != NULL);q = H -> next;do{m--;q -> data = arr[m];q = q ->next;}while(q != NULL);}link_show(H);
}//销毁链表
void link_delete(link_p H)
{while(H -> next != NULL)tail_delete(H);
}
//回显数据
void link_show(link_p H)
{if(empty(H)){printf("空");return ;}link_p p = H -> next;printf("————");for(int i = 0; i < H -> len; i++){printf("%d",p -> data);p = p -> next;}printf("————");putchar(10);
}//判空
int empty(link_p H)
{return H == NULL;
}
link.h
#ifndef __LINK_H__
#define __LINK_H__#include <stdio.h>
#include <stdlib.h>
#include <string.h>typedef int datatype;
typedef struct link
{union{datatype data;int len;};struct link *next;
}link, *link_p;//创建头结点和数据节点
link_p link_create();
link_p link_node();//节点功能函数
void head_add(link_p H);
void tail_add(link_p H);
void idex_inset(link_p H);
void head_delete(link_p H);
void tail_delete(link_p H);
void idex_delete(link_p H);
link_p idex_find(link_p H);
void idex_change(link_p H);
void link_delete(link_p H);
void link_short(link_p H);
void link_show(link_p H);
int empty(link_p H);
#endif
相关文章:
单向链表的数据存储(申请堆空间)
函数功能: 0.排序(逆置和顺序排序) 1.回显 2.头插 3.位插 4.尾插 5.尾删 6.头删 7.位删 8.查找 (按值或按位查找) 9.修改 (按值或按位修改) 10.退出 main.c …...
MySQL8之mysql-community-common的作用
在MySQL 8中,mysql-community-common是一个软件包,它提供了MySQL服务器和客户端库所需的一些共同文件。具体来说,mysql-community-common的作用包括但不限于以下几点: 1. 提供基础配置和错误信息 错误信息和字符集包:…...
Emacs有什么优点,用Emacs写程序真的比IDE更方便吗?
Emacs 是一个功能强大的文本编辑器和应用程序框架,它拥有众多的优点,这些优点使得它在某些情况下成为编程的强大工具。然而,是否用 Emacs 写程序比 IDE 更方便,这很大程度上取决于个人的工作习惯和偏好。 Emacs 的主要优点包括&a…...

如何切换手机的ip地址
在数字时代的浪潮中,智能手机已成为我们日常生活中不可或缺的一部分。然而,随着网络安全问题的日益凸显,保护个人隐私和数据安全变得尤为重要。其中,IP地址作为网络身份的重要标识,其安全性与隐私性备受关注。本文将详…...

前端画图引擎ZRender,echarts的渲染器,你知道吗?
Zrender是一个轻量级的Canvas和SVG渲染库,它提供了一个高性能的图形绘制和交互的解决方案,用于在Web页面上创建丰富的数据可视化和交互式图形。 可能大部分小伙伴不知道这个类库,本文给大家科普一下。 一、Zrender是谁? 该项目…...

web前端开发——标签一
今天我来针对web前端开发讲解标签一 Html标签_标题&段落&换行 注释标签:Ctrl/ Ctrl/ ,用户可能会获取到注释标签 注释的原则: •和代码逻辑一致 •尽量使用中文 •正能量 标题标签:<h1></h1> h1-h6 标题标签有6…...
【深度学习】探讨最新的深度学习算法、模型创新以及在图像识别、自然语言处理等领域的应用进展
深度学习作为人工智能领域的重要分支,近年来在算法、模型以及应用领域都取得了显著的进展。以下将探讨最新的深度学习算法与模型创新,以及它们在图像识别、自然语言处理(NLP)等领域的应用进展。 一、深度学习算法与模型创新 新型…...

使用 mongo2neo4j 和 SemSpect 通过各种方式进行图探索
用于可视化和探索每个 MEAN 堆栈背后的数据图的 ETL 您是否正在努力回答有关 MEANS Web 服务数据的紧急问题?哪里有 BI 可以快速回答“上个季度哪些亚洲的artisan.plus 用户触发了订单?”这个问题,而无需编写查询?使用 mongo2neo4…...
淘宝卖家难免遇到的商品问题 在淘宝买的东西出问题了,该如何维权
很多朋友对于淘宝卖家难免遇到的商品问题和在淘宝买的东西出问题了,该如何维权不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧! [1] 淘宝买东西,过了售后期,有质量问题怎…...
ffmpeg 安装 h264(x264)encoder
#下载并安装x264 # 切换root用户 sudo -i # 输入密码cd ~ mkdir FFmpeg7#下载并安装x264 git clone https://code.videolan.org/videolan/x264.git cd x264 mkdir build./configure --help # 报缺少asm 时 可加入--disable-asm # --prefix/home/llh/ffmpeg/build/ 指定安装目录…...

Java项目:基于SSM框架实现的健康综合咨询问诊平台【ssm+B/S架构+源码+数据库+毕业论文】
一、项目简介 本项目是一套基于SSM框架实现的健康综合咨询问诊平台 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、…...

SpringBoot源码阅读(4)——事件
从监听器到事件 SpringApplication运行中触发事件,多播器发送事件到监听器,监听器处理事件。 SpingApplication中事件都是经过SpringApplicationRunListeners类传送到各个监听器。 以starting事件为例 void starting(ConfigurableBootstrapContext boo…...

EDI安全:如何在2024年保护您的数据免受安全和隐私威胁
电子数据交换(EDI)支持使用标准化格式在组织之间自动交换业务文档。这种数字化转型彻底改变了业务通信,消除了对纸质交易的需求并加速了交易。然而,随着越来越依赖 EDI 来传输发票、采购订单和发货通知等敏感数据,EDI …...

RabbitMQ快速入门 - 图像化界面的简单操作
目录 1、RabbitMQ的安装 2、RabbitMQ基本介绍 3、简单案例 4、数据隔离 1、RabbitMQ的安装 官网链接:rabbitmq官网 (官网很详细,也可以在官网学习啦~) 基础入门:自主学习:最新版本:安装我…...

新版亚组交互效应函数(P for interaction)newscitb5 1.3版本发布--用于一键生成交互效应表
在SCI文章中,交互效应表格(通常是表五)能为文章锦上添花,增加文章的信服力,增加结果的可信程度,还能进行数据挖掘。什么是亚组,通常就是特殊类型人群,比如男女,种族等&am…...
gpt讲 Observable 对象
什么是 Observable? Observable 是一种用于处理异步数据流的数据类型。它可以发出多个值,这些值可以是同步或者异步产生的,并且可以在时间上发生变化。在 Angular 中,HttpClient 返回的响应对象、事件流以及许多其他异步任务都可…...

STM32的SPI接口详解
目录 1.SPI简介 2.SPI工作原理 3.SPI时序 3.1 CPOL(Clock Polarity,时钟极性): 3.2 CPHA(Clock Phase,时钟相位): 3.3 四种工作模式 4.相关代码 4.1使能片选信号 4.2使能通…...

谷歌+火狐浏览器——实现生成二维码并实现拖动——js技能提升
最新遇到的问题:前两个二维码拖动不了,只有第三个一维码生成后,才可以拖拽 【问题】:出现在都是绝对定位,但是没有指定z-index导致的。 解决办法:在方法中添加一个变量 renderDrag(id) {var isDragging f…...

128陷阱详解(从源码分析)
1、128陷阱描述 Integer 整型 -128~127 超过这个范围,比较会不准确 例子 public static void main(String[] args) {Integer a128;Integer b128;Integer e127;Integer f127;System.out.println(ab); //输出falseSystem.out.println(a.equals(b)); //输出trueS…...
点云处理实操 基于多项式重构的平滑和法线估计
目录 基于多项式重构的平滑和法线估计 一、什么是移动最小二乘法(Moving Least Squares, MLS) 二、算法原理 三、算法应用 四、PCL代码实践 基于多项式重构的平滑和法线估计 原文地址:Smoothing and normal estimation based on polynomial reconstruction — Point Cl…...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版
1.题目描述 2.思路 当前的元素可以重复使用。 (1)确定回溯算法函数的参数和返回值(一般是void类型) (2)因为是用递归实现的,所以我们要确定终止条件 (3)单层搜索逻辑 二…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献
Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译: ### 胃肠道癌症的发病率呈上升趋势,且有年轻化倾向(Bray等人,2018&#x…...

Springboot 高校报修与互助平台小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,高校报修与互助平台小程序被用户普遍使用,为…...