循环双链表的操作

归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝

每一个裂缝都是为透出光而努力!

CLinkList.h

#pragma once
#include<stdio.h>
#include<malloc.h>#define DataType inttypedef struct CLNode
{DataType data;struct CLNode* next;
}CLNode,*CLinkList;void InitCLinkList(CLinkList* head);int InsertElem(CLinkList head, int i, DataType e);int DeleteElem(CLinkList head, int i, DataType* e);void InsertElemR(CLinkList head, DataType e);void InsertElemF(CLinkList head, DataType e);

CLinkList.cpp

#include "CLinkList.h"#define _CRT_SECURE_NO_WARNINGS 1void InitCLinkList(CLinkList* head)
{(*head) = (CLinkList)malloc(sizeof(CLNode));(*head)->next = *head;
}int InsertElem(CLinkList head, int i, DataType e)
{CLNode* pre, * p;if (i <= 0){printf("插入位置错误!\n");return -1;}int j;pre = head;j = 0;while (pre->next != head && j < i - 1){pre = pre->next;j++;}if (j != i - 1){printf("插入位置错误!\n");return 0;}p = (CLNode*)malloc(sizeof(CLNode));p->data = e;p->next = pre->next;pre->next = p;return 1;
}int DeleteElem(CLinkList head, int i, DataType* e)
{CLNode* pre, *p;int j;if (i <= 0){printf("删除位置错误!\n");return -1;}pre = head;j = 0;while (pre->next!= head &&j < i - 1){pre = pre->next;j++;}if (j != i - 1){printf("删除位置错误!\n");return 0;}p = pre->next;*e = p->data;pre->next = p->next;free(p);return 1;
}void InsertElemR(CLinkList head, DataType e)
{CLNode* pre, * p;pre = head;while (pre->next != head){pre = pre->next;}p = (CLNode*)malloc(sizeof(CLNode));p->data = e;p->next = pre->next;pre->next = p;
}void InsertElemF(CLinkList head, DataType e)
{CLNode* p;p = (CLNode*)malloc(sizeof(CLNode));p->data = e;p->next = head->next;head->next = p;
}

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

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

相关文章

FFmpeg: 自实现ijkplayer播放器--04消息队列设计

文章目录 播放器状态转换图播放器状态对应的消息&#xff1a; 消息对象消息队列消息队列api插入消息获取消息初始化消息插入消息加锁初始化消息设置消息参数消息队列初始化清空消息销毁消息启动消息队列终止消息队列删除消息 消息队列&#xff0c;用于发送&#xff0c;设置播放…

[lesson33]C++中的字符串类

C中的字符串类 历史遗留问题 C语言不支持真正意义上的字符串C语言用字符数组和一组函数实现字符串操作C语言不支持自定义类型&#xff0c;因此无法获得字符串类型 解决方案 从C到C的进化过程引入自定义类型在C中可以通过类完成字符串类型的定义 标准库中的字符串类 C语言直…

学鸿蒙开发的优劣势,你清楚吗?建议你了解一下!

随着科技的不断发展和智能设备的普及&#xff0c;鸿蒙系统作为华为自主研发的操作系统&#xff0c;正逐渐受到市场的关注。2024年&#xff0c;学鸿蒙开发是否有前途&#xff0c;成为了很多开发者关心的问题。本文将从多个角度分析鸿蒙系统的发展前景&#xff0c;以及学习鸿蒙开…

Android使用shape属性绘制边框内渐变色

目录 先上效果图实现方法shape属性介绍代码结果 先上效果图 这是使用AndroidStudio绘制的带有渐变色的边框背景色 实现方法 项目中由于UI设计需求&#xff0c;需要给按钮、控件设置带有背景色效果的。以下是UI效果图。 这里我们使用shape属性来绘制背景效果。 shape属性介…

Leetcode-48-旋转图像

题目说明 给定一个 n n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明&#xff1a;你必须在原地旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例 1: 给定 matrix [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入…

如何在横向渗透攻击中寻到一线生机

横向渗透&#xff0c;作为计算机网络中的一种攻击技术&#xff0c;展现出了攻击者如何巧妙地利用同一级别系统间的漏洞和弱点&#xff0c;扩大其网络访问权限。与纵向渗透不同&#xff0c;横向渗透不关注权限的垂直提升&#xff0c;而是更侧重于在同一层级内扩展影响力。 横向…

Python数据容器(一)

一.数据容器入门 1.Python中的数据容器&#xff1a;一种可以容纳多份数据的数据类型&#xff0c;容纳的每一份数据称之为1个元素&#xff0c;每一个元素&#xff0c;可以是任意类型的数据&#xff0c;如字符串、数字、布尔等。 2.数据容器根据特点的不同&#xff0c;如&#…

VTK —— 一、Windows10下编译VTK源码,并用Vs2017代码测试(附编译流程、附编译好的库、vtk测试源码)

效果 编译 1、下载VTK8.2.0源码        2、解压源码后&#xff0c;进入目录创建build目录&#xff0c;同时在build内创建install目录 (下图install目录是在cmake第一次后才手动创建&#xff0c;建议在创建build时创建)        3、打开CMake&#xff0c;如下图填入…

卷积神经网络结构组成与解释

卷积神经网络结构组成与解释 卷积神经网络是以卷积层为主的深度网路结构&#xff0c;网络结构包括有卷积层、激活层、BN层、池化层、FC层、损失层等。卷积操作是对图像和滤波矩阵做内积&#xff08;元素相乘再求和&#xff09;的操作。 1. 卷积层 常见的卷积操作如下&#x…

UE5学习日记——实现自定义输入及监听输入,组合出不同的按键输入~

UE5的自定义按键和UE4有所不同&#xff0c;在这里记录一下。 本文主要是记录如何设置UE5的自定义按键&#xff0c;重点是学会原理&#xff0c;实际开发时结合实际情况操作。 输入映射 1. 创建输入操作 输入操作并不是具体的按键映射&#xff0c;而是按键的激活方式&#xff0…

搭建zabbix6.0TLS

创建初始容器 docker run --name php-fpm -p 9000:9000 -d php:fpm创建文件目录 mkdir -p /opt/php/{conf,html} && cd docker/php复制文件 docker cp php-fpm:/usr/local/etc/php-fpm.d/www.conf /opt/php/conf/www.conf docker cp php-fpm:/usr/local/etc/php/ph…

【数据可视化】教程及案例

数据可视化是将数据通过图形、图像等形式直观展现出来的技术&#xff0c;它可以帮助人们更好地理解数据背后的信息和趋势。以下是一些数据可视化的教程和案例资源&#xff0c;以及它们各自的特点和应用场景。 ### 教程资源 1. **Python数据可视化入门教程【3】** - 这些教…

简单高效的GO发票识别+发票查验接口

在这个瞬息万变的商业世界里&#xff0c;商业欺诈如影随形&#xff0c;虚假发票成为企业难以忽视的风险。而发票作为每笔交易的重要凭证&#xff0c;对其进行入账前的真伪查验显得尤为重要。但面对海量的发票查验与发票录入工作&#xff0c;人工手动查验的方式&#xff0c;速度…

Avalonia中MVVM模式下设置TextBox焦点

Avalonia中MVVM模式下设置TextBox焦点 前言引入Nuget库程序里面引入相关库修改前端代码#效果图 前言 我们在开发的过程中,经常会遇到比如我在进入某个页面的时候我需要让输入焦点聚焦在指定的文本框上面,或者点击某个按钮触发某个选项的时候也要自动将输入焦点聚焦到指定的文…

制作一个OpenHarmony视频播放器

简介 媒体子系统是 OpenHarmony 中重要的子系统&#xff0c;可以提供音视频播放能力。媒体子系统为开发者提供一套简单且易于理解的接口&#xff0c;使得开发者能够方便接入系统并使用系统的媒体资源。媒体子系统提供以下常用功能&#xff1a; 音视频播放&#xff08;AVPlaye…

困惑度(Perplexity)的计算方法和意义

困惑度&#xff08;Perplexity&#xff09;是一种用于评估语言模型性能的指标&#xff0c;特别是在自然语言处理领域中。它衡量的是模型对一组样本数据的预测能力&#xff0c;通常用于评估语言模型的预测准确度和泛化能力。 提出契机 困惑度的概念最早是由Jelinek和Mercer在1…

比特币减半:挑战与机遇

比特币减半是加密货币领域中一件备受关注的大事&#xff0c;它不仅影响着比特币本身的发展&#xff0c;也深刻影响着整个加密货币市场的走势。在这个历史性时刻&#xff0c;我们有必要深入分析比特币减半带来的挑战与机遇&#xff0c;以及未来的加密货币发展趋势。 挑战&#x…

【Java框架】Mybatis教程(二)——SQL映射及缓存

目录 SQL传参1.单个简单参数使用1使用2 2.多个简单参数2.1使用索引【不推荐】2.2使用Param 3.复杂参数3.1对象3.2集合(Map) Mybatis中的批量操作1.批量查询1.1数组入参1.2List入参1.3Map中有list入参 SQL映射的XML文件resultMapresultMap属性方式1&#xff1a;在查询时&#xf…

【Entity Framework】聊一聊EF中继承关系

【Entity Framework】聊一聊EF中继承关系 文章目录 【Entity Framework】聊一聊EF中继承关系一、概述二、实体类型层次结构映射三、每个层次结构一张表和鉴别器配置四、共享列五、每个类型一张表配置六、每个具体类型一张表配置七、TPC数据库架构八、总结 一、概述 Entity Fra…

如何实现对空调状态监测的监控

随着科技的飞速发展和人们生活水平的持续提高&#xff0c;空调已经成为现代家庭和办公环境中不可或缺的一部分。然而&#xff0c;传统的空调使用方式往往存在能效低下、操作不便等问题。为了解决这些问题&#xff0c;智能空调控制器应运而生&#xff0c;它不仅能实现对空调状态…