loop_list单向循环列表

#include "loop_list.h"
//创建单向循环链表
loop_p create_head()
{
    loop_p L=(loop_p)malloc(sizeof(loop_list));
    if(L==NULL)
    {
        printf("create fail\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("create fail\n");
        return NULL;
    }
    new->data=data;
    return new;
}
//头插
void insert_head(loop_p L,datatype data)
{
    if(L==NULL)
    {
        printf("data fail\n");
        return;
    }
    loop_p new=create_node(data);
    new->next=L->next;
    L->next=new;
    L->len++;
}
//输出
void out_put_loop(loop_p L)
{
    loop_p p=L->next;
    while(p!=L)
    {
        printf("%d--->\n",p->data);
        p=p->next;
    }
    putchar(10);
}
//按位置插入
void insert_pos(loop_p L,datatype data,int pos)
{
    loop_p new=create_node(data);
    loop_p p=L;
    for(int i=0;i<pos-1;i++)
    {
        p=p->next;
    }
    new->next=p->next;
    p->next=new;
    L->len++;
}
//尾删
void del_tail(loop_p L)
{
    loop_p p=L;
    while(p->next->next!=L)
    {
        p=p->next;
    }
    loop_p del=p->next;
    p->next=L;
    free(del);
    L->len--;
}
//按位置删除
int del_pos(loop_p L,datatype pos)
{
    loop_p p=L;
    for(int i=0;i<pos-1;i++)
    {
        p=p->next;
    }
    loop_p del = p->next;
    p->next=p->next->next;
    free(del);
    L->len--;
}
#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);
//头插
void insert_head(loop_p L,datatype data);
//按位置插入
void insert_pos(loop_p L,datatype data,int pos);
//输出(看现象)
void out_put_loop(loop_p L);
//尾删
void del_tail(loop_p L);
//按位置删除
int del_pos(loop_p L,datatype pos);

#endif
#include "loop_list.h"
int main()
{
    loop_p L=create_head();
    insert_head(L,1);
    insert_head(L,2);
    insert_head(L,3);
    insert_pos(L,4,2);
    //del_tail(L);
    del_pos(L,2);
    out_put_loop(L);

    return 0;
}
 

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

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

相关文章

mybatis 集成neo4j实现

文章目录 前言一、引入jar包依赖二、配置 application.properties三、Mybatis Neo4j分页插件四、Mybatis Neo4j自定义转换器handler五、MybatisNeo4j代码示例总结 前言 MyBatis是一个基于Java语言的持久层框架&#xff0c;它通过XML描述符或注解将对象与存储过程或SQL语句进行…

Qt+VTK鼠标拾取点生成拉伸闭合三维体

程序示例精选 QtVTK鼠标拾取点生成拉伸闭合三维体 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《QtVTK鼠标拾取点生成拉伸闭合三维体》编写代码&#xff0c;代码整洁&#xff0c;规则&…

java——特殊文件日志技术

目录 特殊文件Properties文件XML文件XML文件有如下的特点XML的作用和应用场景解析XML文件 日志技术概述日志技术的体系结构Logback日志框架概述快速入门核心配置文件logback.xml日志级别项目中使用日志框架 特殊文件 Properties文件 后缀为.properties的文件&#xff0c;称之…

k8s(2)

目录 一.二进制部署k8s 常见的K8S安装部署方式&#xff1a; k8s部署 二进制与高可用的区别 二.部署k8s 初始化操作&#xff1a; 每台node安装docker&#xff1a; 在 master01 节点上操作; 准备cfssl证书生成工具:&#xff1a; 执行脚本文件&#xff1a; 拉入etcd压缩包…

Unity架构师经验分享:基于状态机的逻辑控制

在Unity中&#xff0c;状态机是一种非常重要的设计模式&#xff0c;它可以帮助开发者更好地管理游戏中的逻辑控制。在本文中&#xff0c;我们将详细解答基于状态机的逻辑控制&#xff0c;帮助Unity架构师进阶。 1. 什么是状态机&#xff1f; 状态机是一种用于描述对象在不同状…

一文读懂!2024年NCDA数字绘画竞赛:参赛、要求、获奖作品

第12届未来设计师全国高校数字艺术设计大赛&#xff08;NCDA&#xff09; H类&#xff1a;数字绘画命题选项 命题信息 参赛对象&#xff1a; 1. 大学生组&#xff1a;分①研究生组②本科生组③专科生组&#xff0c;三组分别评审 2. 教师组&#xff1a;普通高校教师&#xf…

mybatis总结三

传统do实现方式&#xff1a; public class StudentDaoImpl implements StudentDao {Overridepublic List<Student> selectStudents() {SqlSession sqlSession MybatisUtils.getSqlSession();String sqlId "com.lifang.dao.StudentDao.selectStudents";List&…

1.1_1 计算机网络的概念、功能、组成和分类

文章目录 1.1_1 计算机网络的概念、功能、组成和分类&#xff08;一&#xff09;计算机网络的概念&#xff08;二&#xff09;计算机网络的功能&#xff08;三&#xff09;计算机网络的组成1.组成部分2.工作方式3.功能组成 &#xff08;四&#xff09;计算机网络的分类 总结 1.…

windows11安装VMware----创建多虚拟机教程

一、centOS下载 1、官网地址&#xff1a;https://www.centos.org/ 2、阿里镜像站&#xff1a;https://mirrors.aliyun.com/centos 3、清华镜像源&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/centos/ 3.、CentOS搜狐镜像&#xff1a;http://mirrors.sohu.com/centos/…

Linux-基础知识(黑马学习笔记)

硬件和软件 我们所熟知的计算机是由&#xff1a;硬件和软件组成。 硬件&#xff1a;计算机系统中电子&#xff0c;机械和光电元件等组成的各种物理装置的总称。 软件&#xff1a;是用户和计算机硬件之间的接口和桥梁&#xff0c;用户通过软件与计算机进行交流。 而操作系统…

个人博客系列-项目部署-nginx(3)

使用Nginx uwsgi进行部署django项目 一. 检查项目是否可以运行 启动项目 python manage.py runserver 0.0.0.0:8099输入ip:8099 查看启动页面 出现上述页面表示运行成功 二. 安装uwsgi并配置 2.1 下载uwsgi pip install uwsgi新建文件test.py写入内容&#xff0c;测试一…

SpringBoot中Redis缓存的使用

目录 1 前言 2 实现方法 2.1 查询数据时 2.2 修改数据 1 前言 对于一些不常改变&#xff0c;但又经常查询的数据&#xff0c;我们可以使用Redis缓存&#xff0c;来缓解数据库的压力&#xff0c;其中的逻辑如下&#xff1a; 2 实现方法 2.1 查询数据时 一般在控制类查询方…

绕过5秒盾Cloudflare和DDoS-GUARD

绕过5秒盾Cloudflare和DDoS-GUARD 5秒盾的特点免费版5秒盾的绕过方法付费版5秒盾的绕过方法 5秒盾的特点 <title>Just a moment...</title>例如: <!DOCTYPE html><html lang"en-US"><head><title>Just a moment...</title&…

Linux文件上传下载与MySQL安装常见问题

Linux文件上传和下载 在FinalShell中拖拽上传文件 双击下载文件 或者 yun -y install lrzsz 安装此命令 rz 进行文件上传 sz 进行文件下载 Linux系统常用的压缩格式 tar格式 归档文件&#xff0c;整合到一个文件内&#xff0c;无压缩效果 gzip格式 gzip压缩文件&…

Python列表:灵活多变的数据结构

文章目录 一、列表1.创建列表2.访问列表元素3.修改列表元素4.添加元素5.删除元素 二、列表脚本操作符1.连接运算符 2.重复运算符 * 三、列表函数&方法1.函数1.1 len() 函数1.2 max() 函数1.3 min() 函数1.4 sum() 函数1.5 list() 函数 2.方法2.1 append() 方法2.2 extend()…

MacBook的nginx出现13: Permission denied 的问题分析和解决办法

同样的项目代码&#xff0c;电脑从Windows更换到了MacBook&#xff0c;发现网站的样式都没有了&#xff0c;直接访问CSS文件 http://crm.ms-test.cc/toolstatic/css/bootstrap.min.css 发现无法访问。查看Nginx错误日志&#xff1a; 说明是nginx没有权限访问这个CSS文件&#…

Mockito测试框架入门与使用

目录 MockitoMockito使用Mockito依赖Mockito常用注解Mockito常用方法 Mockito Mockito 是一个流行的 Java 单元测试框架&#xff0c;用于模拟&#xff08;mock&#xff09;对象以便进行单元测试。它可以帮助开发人员创建和管理模拟对象&#xff0c;以便在测试过程中替换那些不…

mysql 分表实战

本文主要介绍基于range分区的相关 1、业务需求&#xff0c;每日160w数据&#xff0c;每月2000w;解决大表数据读写性能问题。 2、数据库mysql 8.0.34&#xff0c;默认innerDB;mysql自带的逻辑分表 3、分表的目的:解决大表性能差&#xff0c;小表缩小查询单位的特点(其实优化的精…

鼠标右键助手专业版 MouseBoost PRO for Mac v3.3.6中文破解

MouseBoost Pro mac版是一款简单实用的鼠标右键助手专业版&#xff0c;MouseBoost Pro for Mac只要轻点你的鼠标右键&#xff0c;就可以激活你想要的各种功能&#xff0c;让你的工作效率大幅度提高&#xff0c;非常好用。 软件下载&#xff1a;MouseBoost PRO for Mac v3.3.6中…

Gemma模型论文详解(附源码)

原文链接&#xff1a;Gemma模型论文详解&#xff08;附源码&#xff09; 1. 背景介绍 Gemma模型是在2023.2.21号Google新发布的大语言模型, Gemma复用了Gemini相同的技术(Gemini也是Google发布的多模态模型)&#xff0c;Gemma这次发布了了2B和7B两个版本的参数&#xff0c;不…