2.23数据结构
单向循环链表
创建单向循环链表,创建节点 ,头插,按位置插入,输出,尾删,按位置删除功能
//main.c
#include "loop_list.h"
int main()
{loop_p H=create_head();insert_head(H,12);insert_head(H,6);insert_head(H,90);insert_head(H,123);out_put_loop(H);insert_pos(H,100,3);out_put_loop(H);del_tail(H);out_put_loop(H);del_pos(H,2);out_put_loop(H);return 0;
}
//loop_list.c
#include "loop_list.h"//创建单向循环链表
loop_p create_head()
{loop_p L =(loop_p)malloc(sizeof(loop_list));if(L==NULL){printf("空间申请失败\n");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("空间申请失败\n");return NULL;}new->data=data;return new;}//判空
int loop_empty(loop_p H)
{if(H==NULL){printf("入参为空,请检查\n");return -1;}return H->next==H?1:0;
}//头插
void insert_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 insert_pos(loop_p H,datatype data,int pos)
{if(H==NULL){printf("入参为空,请检查\n");return;}if(pos>H->len+1||pos<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 out_put_loop(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","HEAD");putchar(10);
}
//尾删
void del_tail(loop_p H)
{if(H==NULL){printf("入参为空,请检查\n");return;}if(loop_empty(H)){printf("链表为空,无需删除\n");return;}loop_p p = H;for(int i=0;i<p->len-1;i++){p = p->next;}loop_p del = p->next;p->next=p->next->next;free(del);H->len--;
}
//按位置删除
void del_pos(loop_p H,int pos)
{if(H==NULL){printf("入参为空,请检查\n");return;}if(loop_empty(H)){printf("链表为空,无需删除\n");return;}if(pos>H->len||pos<1){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 = p->next->next;free(del);H->len--;
}
//loop_list.h
#ifndef __LOOP_LIST_H__
#define __LOOP_LIST_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 insert_head(loop_p H,datatype data);//按位置插入
void insert_pos(loop_p H,datatype data,int pos);
//输出
void out_put_loop(loop_p H);//尾删
void del_tail(loop_p H);
//按位置删除
void del_pos(loop_p H,int pos);#endif

链表逆置函数
//单链表的逆置
void overturn_link(link_p H)
{if(H==NULL){printf("入参为空,请检查\n");return;}if(link_empty(H)){printf("链表为空\n");return;}if(H->next->next==NULL){printf("表中只有一个元素,无需翻转\n");return;}link_p p = H->next->next;H->next->next = NULL;link_p q = p->next;while(p!=NULL){p->next = H->next;H->next = p;p = q;if(q!=NULL){q = q->next;}}
}
//单链表的逆置
void overturn_link(link_p H)
{link_p p = H->next;link_p q = H;H->next = NULL;while(p){q=p;p = p->next;q->next = H->next;H->next = q;}
}
思维导图

相关文章:
2.23数据结构
单向循环链表 创建单向循环链表,创建节点 ,头插,按位置插入,输出,尾删,按位置删除功能 //main.c #include "loop_list.h" int main() {loop_p Hcreate_head();insert_head(H,12);insert_head(…...
c++笔记理解
1.封装 (1)构造函数不是必须在的 可以通过行为修改属性 (2)private和protected区别在于继承那里要学 (3)类默认是私有,struct是共有 私有的好处:控制数据的有效性,意…...
二进制部署k8s集群之cni网络插件
目录 k8s的三种网络模式 pod内容器之间的通信 同一个node节点中pod之间通信 不同的node节点的pod之间通信 flannel网络插件 flannel的三种工作方式 VxLAN host-GW UDP Flannel udp 模式 Flannel VXLAN 模式 flannel插件的三大模式的总结 calico网络插件 k8s 组网…...
二维矩阵子集的最大值
登录—专业IT笔试面试备考平台_牛客网 正好遇到了 对于一维,我们只需要贪一次 int ans -1E9; int suf -1E9; for (int i 0; i < n; i) {if (i && (a[i] - a[i - 1]) % 2 0) {suf 0;}suf std::max(suf, 0) a[i];ans std::max(ans, suf); } ans就是最大值…...
瑞_23种设计模式_装饰者模式
文章目录 1 装饰者模式(Decorator Pattern)1.1 介绍1.2 概述1.3 装饰者模式的结构 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 JDK源码解析5 总结5.1 装饰者模式的优缺点5.2 装饰者模式的使用场景5.3 装饰者模式 VS 代理模式 &#x…...
使用Python制作进度条有多少种方法?看这一篇文章就够了!
前言 偶然间刷到一个视频,说到:当程序正在运算时,会有一个较长时间的空白期,谁也不知道程序运行的进度如何,不如给他加个进度条。 于是我今个就搜寻一下,Python版的进度条都可以怎么写! 送书…...
SpringBoot-2.7.6基于SLF4J日志门面的日志框架切换
SpringBoot 没有强制性的日志记录依赖项,但 Commons Logging API 除外,它通常由 Spring Framework 的模块提供。 要使用 Logback,您需要将其包含在类路径中。 推荐的方法是您只需要通过启动器,这都取决于 . 对于 Web 应用程序 ,因为它可传递地依赖于日志记录启动器。 如果…...
MongoDB聚合运算符:$binarySize
$binarySize聚合运算符返回给定字符串或二进制数据的字节数。 语法 { $binarySize: <string or binData> }使用 <string or bindData>可以是任何能够被解析为字符串和二进制数据的表达式;如果表达式解析为null,则$binarySize也返回null&a…...
Android的ViewModel
前言 在Compose的学习中,我们在可组合函数中使用rememberSaveable保存应用数据,但这可能意味着将逻辑保留在可组合函数中或附近。随着应用体量不断变大,您应将数据和逻辑从可组合函数中移出。 而在之前的应用架构学习中&…...
Android 圆环带刻度条进度动画效果实现
效果图 需求是根据传感器做一个重力球效果,先实现了动画后续加上跟传感器联动. 又是摆烂的一天, 尚能呼吸,未来可期啊 View源码 package com.android.circlescalebar.view;import android.content.Context; import android.content.res.Typ…...
94. 二叉树的中序遍历
// 定义一个名为Solution的类,用于解决二叉树的中序遍历问题 class Solution { // 定义一个公共方法,输入是一个二叉树的根节点,返回一个包含中序遍历结果的整数列表 public List<Integer> inorderTraversal(TreeNode root) { // …...
汽车信息安全概述
随着智能网联汽车的迅猛发展,车辆不再是简单的交通工具,而是集数据收集、处理与通信于一体的移动智能终端。然而,这一变革也使得汽车成为黑客攻击的新目标。汽车信息安全问题日益凸显,成为行业关注的焦点。本文将深入探讨汽车信息…...
Linux——基础IO
📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、C语言IO1、写文件2、读文件3、stdin & stdout & stderr 二、系统文件I/O1、写文件…...
数据结构-数组
一,数组基础及注意事项 1,用来储存一组相同的类型的数据. 2,在内存中,分配连续的空姐,数组创建时要指定容量(大小). 3,创建格式: 数据类型 []数组名 int[] arr new int[10] int[] arr2 {1,2,3,4}. 4,索引--访问数组时通过索引进行操作. (注意:一定要理解索引的含义,在数据结…...
【Java程序设计】【C00279】基于Springboot的智慧外贸平台(有论文)
基于Springboot的智慧外贸平台(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的智慧外贸平台 本系统分为系统功能模块、管理员功能模块、买家功能模块以及商家功能模块。 系统功能模块:在平台首页可以…...
C#,计算几何,计算机图形学(Computer Graphics)洪水填充算法(Flood Fill Algorithm)与源代码
1 泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法(Flood Fill Algorithm) ,又称洪水填充算法,是在很多图形绘制软件中常用的填充算法,最熟悉不过就是 windows 自带画图软件的油漆桶功能。 2 源程序 using System; using System.Collecti…...
C# 实现网页内容保存为图片并生成压缩包
目录 应用场景 实现代码 扩展功能(生成压缩包) 小结 应用场景 我们在一个求职简历打印的项目功能里,需要根据一定的查询条件,得到结果并批量导出指定格式的文件。导出的格式可能有多种,比如WORD格式、EXCEL格式、PDF格式等,…...
C#_事件简述
事件模型简述 C#中事件的运行模式为"发布订阅模型",事件触发者称为"发布者",事件处理者称为"订阅者" 事件模型的五个组成部分 事件(成员)事件的拥有者(类/对象)事件的响应…...
C语言:指针(一)
目录 1.内存和地址2. 指针变量和地址2.1 取地址操作符(&)2.2 指针变量和解引用操作符(*)2.2.1 指针变量2.2.2 解引用操作符(*) 2.3 指针变量的大小 3.指针变量的类型和意义3.1 指针的解引用3.2 指针 -指…...
【leetcode刷题之路】面试经典150题(3)——哈希表+区间
文章目录 5 哈希表5.1 【哈希表】赎金信5.2 【数学】同构字符串5.3 【数学】单词规律5.4 【哈希表】有效的字母异位词5.5 【哈希表】字母异位词分组5.6 【双指针】两数之和5.7 【数学】快乐数5.8 【哈希表】219. 存在重复元素 II5.9 【数学】最长连续序列 6 区间6.1 【数学】汇…...
python-flask-djangol框架的膳食营养食谱管理系统
目录需求分析技术选型数据库设计核心功能实现界面设计测试与部署维护与扩展项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作需求分析 膳食营养食谱管理系统需要具备用户管理、食谱管理、营养分析、购物清单生成等功能。系统应支…...
uni-app小程序开发必备:纯TypeScript实现4种UUID生成方案(无npm依赖)
uni-app小程序开发实战:零依赖TypeScript实现4种UUID生成方案 在uni-app跨平台开发中,小程序环境对npm库的支持限制常常让开发者头疼。特别是在需要生成唯一标识符的场景下,传统依赖uuid库的方案往往无法直接使用。本文将带你从底层原理出发&…...
Llama-3.2V-11B-cot从零部署:Docker镜像运行与端口映射详解
Llama-3.2V-11B-cot从零部署:Docker镜像运行与端口映射详解 1. 项目概述 Llama-3.2V-11B-cot是基于Meta Llama-3.2V-11B-cot多模态大模型开发的高性能视觉推理工具。它针对双卡4090环境进行了深度优化,特别适合想要体验Llama多模态大模型但缺乏专业部署…...
从锡膏印刷到炉温曲线:手把手调试你的第一条SMT生产线(避坑指南)
从锡膏印刷到炉温曲线:手把手调试你的第一条SMT生产线(避坑指南) 第一次接手SMT生产线调试时,我盯着那台二手贴片机的报警提示,手心全是汗。钢网上残留的锡膏像在嘲笑我的无知,而流水线上堆积的PCB板则不断…...
OpenClaw入门到精通:GLM-4.7-Flash自动化全流程解析
OpenClaw入门到精通:GLM-4.7-Flash自动化全流程解析 1. 为什么选择OpenClawGLM-4.7-Flash组合 去年冬天,当我第一次尝试用Python脚本批量处理公司周报时,发现传统自动化工具在面对非结构化数据时显得力不从心。直到接触了OpenClaw这个能直接…...
Mojo 1.2正式版发布后,Python互操作API发生3处破坏性变更——紧急迁移指南与向下兼容降级方案(含自动转换脚本)
第一章:Mojo 1.2互操作API破坏性变更全景概览Mojo 1.2 版本对与 Python、C/C 及系统原生库的互操作接口进行了深度重构,核心目标是提升类型安全性和运行时性能,但由此引入了多项不兼容的破坏性变更。开发者在升级至 1.2 时必须审慎评估现有绑…...
大模型应用开发:从Demo到生产,小白程序员必看!收藏这份实战指南
本文深入剖析了将大模型应用从原型阶段推向生产环境所面临的关键挑战,涵盖数据处理(格式多样性、切块策略、数据更新)、检索质量(找不到、找不准、找太多)、生成阶段(幻觉、引用溯源)、规模化工…...
AI持续爆火,相关岗位薪资到底达到了多少,AI大模型岗位薪资真相:多少年包能拿到?普通人如何破局?
“AI相关岗位薪资” 随着AI持续火爆,各大厂也都在招聘相关人才,近日OfferShow专门对AI相关岗位的工资情况进行了一期专题汇总,都是校招岗位年包90W左右年包100W年包80w70W50W左右40W左右54W左右34W左右。 看大家投票可信度还是挺高的…...
深度解析模型调参三剑客:Temperature、Top-k与Top-p的实战应用
1. 理解调参三剑客的核心逻辑 第一次接触大模型参数调整时,我被Temperature、Top-k和Top-p这三个参数搞得晕头转向。直到在电商文案生成项目中踩了坑才明白:这三个参数就像烹饪时的火候控制,用对了能让AI输出事半功倍。 Temperature本质上是个…...
Comsol光学仿真连续域束缚态BIC,te,tm模式耦合,透射光谱远场偏振矢量(导出数据计算)
Comsol光学仿真连续域束缚态BIC,te,tm模式耦合,透射光谱远场偏振矢量(导出数据计算),所见即所得 【手指在键盘上停顿三秒】这周在实验室搞COMSOL光学仿真差点被边界条件逼疯,连续域束缚态(BIC)…...
