【无标题】//创建单向循环链表//创建结点//头插//按位置插入//尾删//按位置删除

1.h头文件

#ifndef __1_H_
#define __1_H_
#include <stdio.h>
#include <stdlib.h> 
typedef int datatype;
typedef struct loop_list
{union{int len;datatype data;};struct loop_list *next;
}loop_list,*loop_p;
loop_p create_head();
loop_p create_node(datatype data);
int loop_empty(loop_p H) ;
void cha_head(loop_p H,datatype data);
void cha_tail(loop_p H,datatype data);
void out_put(loop_p H) ;
void cha_pos(loop_p H,datatype data,int pos) ; 
void shan_pos(loop_p H,int pos); 
#endif

1.c

#include"1.h"
loop_p create_head()
{loop_p L=(loop_p)malloc(sizeof(loop_list));if(L==NULL){printf("申请失败");return NULL;}L->len=0;L->next=L;return L;
}
//生成结点
loop_p create_node(datatype data)
{loop_p new=(loop_p)malloc(sizeof(loop_list));if(new==NULL){printf("申请失败");return NULL;}new->data=data;return new;
}
//判空
int loop_empty(loop_p H)
{if(H==NULL){printf("入参为空");return 1;}return H->next==NULL?1:0;
}
//头
void cha_head(loop_p H,datatype data)
{ if(H==NULL){printf("入参为空,请检查\n");return;}loop_p new=create_node(data);new->next=H->next;H->next=new;H->len++;
} 
//尾插
void cha_tail(loop_p H,datatype data)
{if(H==NULL){printf("入参为空,请检查\n");return;}loop_p p=H;while(p->next !=H){p=p->next;}loop_p new=create_node(data);new->next=p->next;p->next=new;H->len++;
}
//输出
void out_put(loop_p H)
{if(H==NULL){printf("入参为空,请检查\n");return;}//定义一个新的结点循环整条链表loop_p p = H->next;  //H不属于链表中的元素//最后一个结点进入循环while(p!=H){printf("%d->",p->data);p = p->next;}printf("%s","NULL");putchar(10);
}
//按位置插入
void cha_pos(loop_p H,datatype data,int pos)
{if(H==NULL){printf("入参为空,请检查\n");return;}if(pos<=0||pos>H->len+1){printf("位置不合理\n");return;}loop_p p=H;for(int i=0;i<pos-1;i++){p=p->next;}loop_p new=create_node(data);new->next=p->next;p->next=new;H->len++;
}
//安位删除
void shan_pos(loop_p H,int pos)
{if(H==NULL){printf("入参为空,请检查\n");return;}if(loop_empty(H)){printf("链表为空\n");return;}//pos合理性判断if(pos<=0||pos>H->len){printf("位置不合理\n");return;}loop_p p=H;for(int i=0 ;i<pos-1;i++){p=p->next;}loop_p del=p->next;p->next=del->next;free(del);H->len--;
}

main.c

#include "1.h"
int main()
{loop_p H=create_head();
//	create_node();cha_head(H,30);cha_head(H,40);cha_head(H,50);cha_tail(H,99);out_put(H);shan_pos(H,2);out_put(H);cha_pos(H,55,3);out_put(H);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/698476.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【嵌入式学习】QT-Day3-Qt基础

1> 思维导图 https://lingjun.life/wiki/EmbeddedNote/20QT 2> 完善登录界面 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后…

子查询

Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 子查询 前面我们学过了利用 group by子句可以实现分组的操作&#xff0c;主要的统计函数有&#xff1a;COUNT()、AVG()、SUM()、MAX()、MIN() 并且介绍了分组统计查询的若干限制以及在…

IP 协议

IP 协议 .IP协议格式四位版本号四位首部长度8位服务类型16位总长度16位标识符,3位标志位,13位片偏移8位生存时间TTL8位协议16位首部校验和32位源地址 32位目的地址IP地址的组成特殊的IP地址 . IP协议格式 四位版本号 用来表示IP协议的版本,现有的IP协议只有两个版本,IPv4,IPv6…

comfyui节点编写示例文件(下)

** 1、先看示例文件的结构 ** ** 2、设置输入参数 ** ** 3、节点指定任务、输出啥 ** ** 4、这个节点干了啥&#xff0c;定义函数、输出结果 ** ** 5、多个节点&#xff0c;就多个类 ** ** 6、设置多个入口 ** ** 7、放置 ** 直接把py文件放到 .\Co…

PostgreSQL教程(四):高级特性

一、简介 在之前的章节里我们已经涉及了使用SQL在PostgreSQL中存储和访问数据的基础知识。现在我们将要讨论SQL中一些更高级的特性&#xff0c;这些特性有助于简化管理和防止数据丢失或损坏。最后&#xff0c;我们还将介绍一些PostgreSQL扩展。 本章有时将引用教程&#xff0…

消息中间件之RocketMQ为什么写文件这么快?

RocketMQ的存储涉及中&#xff0c;很大一部分是基于Kafka的涉及进行优化的。 PageCache 现代操作系统内核被设计为按照Page读取文件&#xff0c;每个Page默认4KB, 因为程序一般符合局部性原理&#xff0c;所以操作系统在读取一段文件内容时&#xff0c;会将该段内容和附件的文…

Nginx网络服务二-----(虚拟机和location)

一、HTTP设置 1.设置虚拟主机 1.1Nginx 基于域名---虚拟主机 include /apps/nginx/conf.d/*.conf; 1.2Nginx 基于端口---虚拟主机 在做了域名的基础上&#xff0c;按照以下步骤继续 1.3Nginx 基于IP---虚拟主机 2.server下的root root路径格式 指定文件的路径 url …

windows下快速安装nginx 并配置开机自启动

1、下载地址&#xff1a;http://nginx.org/en/download.html 2、启动nginx 注意⚠️ 不要直接双击nginx.exe&#xff0c;这样会导致修改配置后重启、停止nginx无效&#xff0c;需要手动关闭任务管理器内的所有nginx进程。 在nginx.exe目录&#xff0c;打开命令行工具&#xf…

【springblade】springblade(bladeX) 数据权限失效原因分析

文章目录 数据权限接口权限 前言&#xff1a;最近博主在按照bladeX官方文档 配置数据权限 结果发现失效了&#xff0c;网上搜了一下没找到合适的答案&#xff0c;本着求人不如求己的精神&#xff0c;自己调试了一下发现了问题所在&#xff0c;也大致看了一下bladeX的权限逻辑。…

unity——shader入门知识点 学习笔记【个人复习向/侵删/有不足之处欢迎斧正】

零、不同图形接口程序对Shader开发的影响&#xff1a; 1.渲染管线(流水线)和图形接口程序的关系&#xff1a;图形接口程序(OpenGL、 DX等)提供了对渲染管线(流水线)的控制和管理功能&#xff0c;它是开发者和硬件打交道的中间层 2. Shader和图形接口程序的关系&#xf…

计算机毕业设计 基于SpringBoot的宠物商城网站系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Linux理解

VMware安装Linux安装 目录 VMware安装Linux安装 1.1 什么是Linux 1.2 为什么要学Linux 1.3 学完Linux能干什么 2.1 主流操作系统 2.2 Linux系统版本 VMware安装Linux安装 1.1 什么是Linux Linux是一套免费使用和自由传播的操作系统。 1.2 为什么要学Linux 1). 企业用人…

【Git】:初识git

初识git 一.创建git仓库二.管理文件三.认识.git内部结构 一.创建git仓库 1.安装git 使用yum install git -y即可安装git。 2.创建仓库 首先创建一个git目录。 3.初始化仓库 这里面有很多内容&#xff0c;后面会将&#xff0c;主要是用来进行追踪的。 4.配置name和email 当然也…

Node.js的debug模块源码分析及在harmonyOS平台移植

Debug库 是一个小巧但功能强大的 JavaScript 调试工具库&#xff0c;可以帮助开发人员更轻松地进行调试&#xff0c;以便更快地发现和修复问题。它的主要特点是可以轻松地添加调试日志语句&#xff0c;同时在不需要调试时可以轻松地禁用它们&#xff0c;以避免在生产环境中对性…

室内外一体化定位系统

随着科技的不断发展&#xff0c;定位系统已经成为了人们生活中不可或缺的一部分。无论是在户外还是室内&#xff0c;定位服务都给人们带来了极大的便利。然而&#xff0c;传统的定位系统主要集中在室外环境&#xff0c;对于室内环境的定位还存在一定的困难。因此&#xff0c;室…

Spring Boot应用集成Actuator端点自定义Filter解决未授权访问的漏洞

一、前言 我们知道想要实时监控我们的应用程序的运行状态&#xff0c;比如实时显示一些指标数据&#xff0c;观察每时每刻访问的流量&#xff0c;或者是我们数据库的访问状态等等&#xff0c;需要使用到Actuator组件&#xff0c;但是Actuator有一个访问未授权问题&#xff0c;…

酷开科技丨新年新玩法!酷开系统壁纸模式给客厅“换”新

甲辰龙年即将到来&#xff0c;新年新家新气象&#xff0c;快到酷开系统壁纸模式中挑选一款喜欢的壁纸&#xff0c;为新的一年增添一份美好和喜悦吧&#xff01; 酷开科技将更多的电视新玩法带给你&#xff0c;让你的电视成为家庭中的焦点&#xff01;酷开系统壁纸模式&#xf…

LabVIEW高效核磁测井仪器多线程优化

LabVIEW高效核磁测井仪器多线程优化 为提高核磁测井仪器的测试效率与性能&#xff0c;开发了基于LabVIEW的多线程优化模型。该研究针对传统的核磁测井仪器软件&#xff0c;在多任务调度测试和并行技术需求上存在的效率不高和资源利用率低的问题&#xff0c;提出了一个多线程优…

SQL注入工具之SQLmap入门操作

了解SQLmap 基础操作 SQLmap是一款自动化的SQL注入工具&#xff0c;可以用于检测和利用SQL注入漏洞。 以下是SQLmap的入门操作步骤&#xff1a; 1.下载SQLmap&#xff1a;可以从官方网站&#xff08;https://sqlmap.org/&#xff09;下载最新版本的SQLmap。 2.打开终端&#…

修改单据转换规则后保存报错提示

文章目录 修改单据转换规则后保存报错提示 修改单据转换规则后保存报错提示