数据结构--单链
#include "link.h"
plink get_head()
{
plink p=malloc(sizeof(Link));
if(p==NULL)
{
printf("申情节点失败\n");
return NULL;
}
p->len=0;
p->next=NULL;
return p;
}
void head_insert(plink L,int a)
{
if(L==NULL)
{
printf("单链表不存在\n");
}
plink p=malloc(sizeof(Link));//申请新节点
p->data=a;//新节点赋值
p->next=L->next;//将第一个节点的地址放入新节点指针域
L->next=p;//将新节点地址放入头结点指针域
L->len++;
}
void node_output(plink L)
{
if(L==NULL||L->len==0)
{
printf("单链表不存在或者为空\n");
}
plink t=L;
for(int i=0;i<L->len;i++)
{
t=t->next;
printf("%d\t",t->data);
}
putchar(10);
}
void tail_insert(plink L,int a)
{
if(L==NULL)
{
printf("单链表不存在\n");
}
plink t=L;
for(int i=0;i<L->len;i++)
{
t=t->next;
}
plink p=malloc(sizeof(Link));//申请新节点
p->data=a;//新节点赋值
t->next=p;
p->next=NULL;
L->len++;
}
void any_insert(plink L)
{
if(NULL==L)
{
printf("插入失败\n");
}
int key,x;
printf("请输入要插入的位置:");
scanf("%d",&key);
plink t=L;
for(int i=0;i<key-1;i++)
{
t=t->next;
}
printf("请输入要插入的值:");
scanf("%d",&x);
plink p=malloc(sizeof(Link));//申请新节点
p->data=x;//新节点赋值
p->next=t->next;
t->next=p;
L->len++;
}
void head_dele(plink L)
{
if(NULL==L)
{
printf("单链表不存在或者为空\n");
}
plink t=L->next;
L->next=t->next;
L->len--;
free(t);
t=NULL;
}
void tail_dele(plink L)
{
if(NULL==L||L->len==0)
{
printf("单链表不存在或者为空\n");
}
plink t=L;
for(int i=0;i<L->len-1;i++)
{
t=t->next;
}
plink q=t->next;
t->next=NULL;
L->len--;
free(q);
q=NULL;
}
void any_dele(plink L)
{
if(L==NULL||L->len==0)
{
printf("单链表不存在或者为空\n");
}
int key;
printf("请输入要删除的位置:");
scanf("%d",&key);
plink t=L;
for(int i=0;i<key-1;i++)
{
t=t->next;
}
plink p=t->next;//申请新节点
t->next=t->next->next;
L->len--;
free(p);
p=NULL;
}
void find_change(plink L)
{
int key,sub=-1,x;
printf("请输入要查找的数:");
scanf("%d",&key);
printf("请输入要修改的值:");
scanf("%d",&x);
if(L==NULL||L->len==0)
{
printf("单链表不存在或为空\n");
}
plink t=L;
for(int i=0;i<L->len;i++)
{
t=t->next;
if(t->data==key)
{
sub=i;
t->data=x;
}
}
if(sub==-1)
{
printf("不存在该节点\n");
}
}
void node_reverse(plink L)
{
if(L==NULL||L->len==0)
{
printf("单链表不存在或为空\n");
}
plink q=L->next->next;
plink t=L->next;
while(q!=NULL)
{
t->next=q->next;
q->next=L->next;
L->next=q;
q=t->next;
}
}
void node_sort(plink L)//升序
{
if(L==NULL||L->len==0)
{
printf("单链表不存在或为空\n");
}
for(int i=0;i<L->len-1;i++)
{
plink q=L->next->next;
plink t=L->next;
while(q!=NULL)
{
if(q->data<t->data)
{
t->next=q->next;
q->next=L->next;
L->next=q;
q=t->next;
}
else
{
t=t->next;
q=q->next;
}
}
}
}
void node_cut(plink L)
{
if(L==NULL||L->len==0)
{
printf("单链表不存在或为空\n");
}
plink t=L->next;
plink q=L->next->next;
while(q!=NULL)
{
L->next=q;
free(t);
t=q;
q=t->next;
L->len--;
}
free(t);
t=NULL;
L->len--;
}
#ifndef _LINK_H
#define _LINK_H
#include<myhead.h>
typedef struct node//节点结构体
{
union
{
int len;//链表长度
int data;//节点数据域,存储数据
};//节省空间
struct node *next;//指向下一个指针节点
}Link,*plink;//结构体普通类型
plink get_head();
void head_insert(plink,int);
void node_output(plink);
void tail_insert(plink,int);
void any_insert(plink);
void head_dele(plink);
void tail_dele(plink);
void any_dele(plink);
void find_change(plink);
void node_reverse(plink);
void node_sort(plink);
void node_cut(plink);
#endif
#include "link.h"
int main(int argc, const char *argv[])
{
//申请头结点函数,返回头结点地址给L
plink L=get_head();
//头插法 创建整个表
int a[10]={10,20,30,40,50,60,70,80,90,95};
for(int i=0;i<10;i++)
{
head_insert(L,a[i]);
}
//尾插法创建整个表
for(int i=0;i<10;i++)
{
tail_insert(L,a[i]);
}
//单链表遍历
node_output(L);
putchar(10);
any_insert(L);
node_output(L);
putchar(10);
head_dele(L);
node_output(L);
putchar(10);
tail_dele(L);
node_output(L);
any_dele(L);
node_output(L);
putchar(10);
find_change(L);
node_output(L);
putchar(10);
node_reverse(L);
node_output(L);
putchar(10);
node_sort(L);
node_output(L);
putchar(10);
node_cut(L);
node_output(L);
return 0;
}
相关文章:

数据结构--单链
#include "link.h" plink get_head() { plink pmalloc(sizeof(Link)); if(pNULL) { printf("申情节点失败\n"); return NULL; } p->len0; p->nextNULL; return p; } void head_insert(plink L,int a) {…...

春秋云镜CVE-2023-38836
打开靶场环境 点击发现一个登陆框,弱口令试一下 发现账号密码为admin,password 随便点击点击 Media发现这里可以上传文件上传木马试试 <?php eval($_POST["wjq"]); ?> 发现不能上传php文件 php内容 修改他的格式 抓包绕过一下 302就可以其实已经…...

Linux 进程概念
Linux 进程概念 硬件理解冯 诺依曼体系结构五大组成部件强调存储 引子操作系统(Operator System)概念作用认识为什么要有操作系统? 结构 示意图理解操作系统system call库函数概念 进程什么是进程概念误区认识 描述进程 - PCBtask_struct - P…...

【秋招突围】2024届校招-米哈游笔试题-第二套
🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🌰 明晚又有米…...
tklog v0.0.9 :Rust灵活高效日志管理
tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数…...
长安链java-sdk打成jar包部署找不到配置文件,springBoot项目制作Docker镜像
长安链使用sdk_config.yml的形式来引入用户的各种证书文件, 但是打成jar包部署在服务器上会提示找不到文件。 由于国内对镜像的限制,我选用了阿里的龙蜥镜像,里面提供java1.8的环境,因为长安链要1.8的环境 docker pull anolis-…...
AI问答:理解软件开发中的几个概念 / 软件逆向、加密、加固、脱壳、反编译
一、软件逆向 定义软件逆向工程是指从程序系统出发,通过运用解密、反汇编、系统分析、程序理解等多种计算机网络安全技术,对软件的结构、流程、算法、代码等进行逆向的拆解分析,从而推出软件产品的源代码、设计原理、结构、算法、处理过程、…...

第十一届MathorCup高校数学建模挑战赛-C题:基于有限差分法的散热机理建模与海底数据中心优化设计
目录 摘 要 1 问题重述 1.1 问题背景 1.2 问题重述 2 问题分析 3 模型假设 4 符号说明 5 我们的工作 6 模型的建立与求解 6.1 建模前的准备 6.2 问题一的建模与求解 6.3 问题二的建模与求解 6.4 问题三的建模与求解 6.5 问题四的建模与解决 7 结果检验及误差分析 8 模型评价 9 …...
【java】常量
文章目录 什么是常量常量分类 什么是常量 程序运行过程当中,其值不可以发生改变的量。 常量分类 常量类型说明举例字符串常年用双引号括起来的内容“Hello World !” “我是一个常量”整数常量不带小数点的数字666 -888小数常量带小数的数字3.14、-3.19字符常量用…...
react如何使用useContext + TS 自定义hooks
为了在 TypeScript 中为 useContext 提供良好的类型提示,我们需要为 Context 定义类型,并确保在创建和使用 Context 时应用这些类型。这可以帮助我们获得更好的类型检查和智能提示。 示例:在用户认证示例中添加 TypeScript 类型 定义类型 …...
【网络安全学习】SQL注入03:如何防止SQL注入
防止SQL注入,就必须清楚:数据库只负责执行SQL语句,根据SQL语句来返回相关数据。数据库并没有什么好的办法直接过滤SQL注入,哪怕是存储过程也不例外。 那么防止SQL注入就得从代码层面进行入手。 1. 严格的数据类型 Java、C#等强…...
linux利用crontab捕获iotop
1.iotop介绍 iotop-简单的类似TOP 命令的I/O监视器 使用:iotop[选项] 描述:iotop监视Linux内核输出的I/O使用信息(需要2.6.20或更高版本),并显示系统上进程或线程的当前I/O使用情况表。至少需要在您的Linux内核构建…...

android13 关闭selinux 临时关闭或者永久关闭
总纲 android13 rom 开发总纲说明 目录 1.前言 2.情况分析 2.1 临时关闭 2.2 永久关闭 3.修改方法 3.1 临时修改 3.2 永久关闭 4.编译测试 5.彩蛋 1.前言 在Android操作系统中,SELinux(Security-Enhanced Linux)是一种安全模块,用于提供强制访问控制(MAC)安全…...

JetBrains GoLand单元测试不支持单个单元测试case执行
譬如函数代码 func AddInt(a, b int32) int32 {return a b } 单元测试代码: func TestAddInt(t *testing.T) {type args struct {a int32b int32}tests : []struct {name stringargs argswant int32}{{name: "add",args: args{a: 1, b: 2},want: 3},{n…...
基于STM32设计的盆栽种植自动管理系统(微信小程序)(201)
文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】设计实现的功能【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】ESP8266工作模式配置1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 系统框…...
白骑士的PyCharm教学实战项目篇 4.1 Web应用开发
系列目录 上一篇:白骑士的PyCharm教学高级篇 3.5 团队协作与集成开发 在现代开发环境中,Web应用已经成为开发者们不可或缺的一部分。利用PyCharm强大的功能,开发Web应用变得更加高效和直观。本文将详细介绍如何基于PyCharm进行…...
Linux与Docker常用运维命令一览
大家好,欢迎各位工友。 在博主陆陆续续的运维过程中,经常会用到许多运维相关的命令,以往都是现用现查,如今抽时间都记录一下,便于查阅和使用。 Linux常用命令 文件和目录操作 ls:列出目录内容cd [direc…...
怎样在 SQL 中创建视图(VIEW),以及视图的作用和优势是什么?
在 SQL 中创建视图(VIEW)可以使用 CREATE VIEW 语句。语法如下: CREATE VIEW view_name AS SELECT column1, column2, … FROM table_name WHERE condition; 视图是一个虚拟的表,它由一个查询结果集定义。与实际的表不同&#x…...

Tomcat 使用和配置文件(详解)
一.tomcat 介绍 1. tomcat 概述 自从JSP发布之后,推出了各式各样的JSP引擎。Apache Group在完成GNUJSP1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器,当然同时也支持 Servlet,这样Tomcat就诞…...

html+css+js+jquery实现一个 飘零的树叶
<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>飘落的枫叶</title><style>.maple {position: absolute;top: 0;color: #ff0000;}</style><script src"https://www.jq22.com…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...