单向链表的数据存储(申请堆空间)
函数功能:
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…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
