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;}
}

思维导图

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

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

相关文章

如何查看电脑使用记录?保障个人隐私和安全

查看电脑使用记录是了解电脑活动的一种重要方式&#xff0c;可以帮助用户追踪应用程序的使用情况、登录和关机时间、文件的访问记录等。在本文中&#xff0c;我们将介绍如何查看电脑使用记录的三个方法&#xff0c;以分步骤详细说明如何查看电脑使用记录&#xff0c;帮助用户更…

杂题——1097: 蛇行矩阵

题目描述 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 输入格式 本题有多组数据&#xff0c;每组数据由一个正整数N组成。&#xff08;N不大于100&#xff09; 输出格式 对于每一组数据&#xff0c;输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角…

如何用Docker+jenkins 运行 python 自动化?

1.在 Linux 服务器安装 docker 2.创建 jenkins 容器 3.根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境) 4.运行新的 python 容器&#xff0c;执行 jenkins 从仓库中拉下来的自动化项目 5.执行完成之后删除容器 环境准备 Linux 服务器一台(我的是 CentOS7) …

Jmeter之内置函数__property和__P的区别

1. __property函数 作用 读取 Jmeter 属性 语法格式 ${__property(key,var,default)} 参数讲解 小栗子 ${__property(key)} 读取 key 属性如果找不到 key 属性&#xff0c;则返回 key&#xff08;属性名&#xff09; ${__property(key,,default)} 读取 key 属性如果找不到 k…

PHP实现分离金额和其他内容便于统计计算

得到的结果可以粘贴到excel计算 <?php if($_GET["x"] "cha"){ $tips isset($_POST[tips]) ? $_POST[tips] : ; $pattern /(\d\.\d|\d)/; $result preg_replace($pattern, "\t\${1}\t", $tips); echo "<h2><strong>数…

Python流程控制有知道的吗?

流程控制是编程的核心概念之一&#xff0c;Python也不例外。在Python中&#xff0c;程序的流程控制结构主要包括顺序结构、选择结构和循环结构。这些结构让程序员能够更好地组织代码&#xff0c;使其按照特定的逻辑执行。 1.顺序结构 顺序结构是Python中最简单的流程控制结构&…

ELK介绍以及搭建

基础环境 hostnamectl set-hostname els01 hostnamectl set-hostname els02 hostnamectl set-hostname els03 hostnamectl set-hostname kbased -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config systemctl stop firewalld & systemctl disable firewalld# 安…

Unity数据持久化之PlayerPrefs

这里写目录标题 PlayerPrefs概述基本方法PlayerPrefs存储位置实践小项目反射知识补充数据管理类的创建反射存储数据----常用成员反射存储数据----List成员反射存储数据----Dictionary成员反射存储数据----自定义类成员反射读取数据----常用成员反射读取数据----List成员反射读取…

Sora-OpenAI 的 Text-to-Video 模型:制作逼真的 60s 视频片段

OpenAI 推出的人工智能功能曾经只存在于科幻小说中。 2022年&#xff0c;Openai 发布了 ChatGPT&#xff0c;展示了先进的语言模型如何实现自然对话。 随后&#xff0c;DALL-E 问世&#xff0c;它利用文字提示生成令人惊叹的合成图像。 现在&#xff0c;他们又推出了 Text-t…

选择适合你的编程语言

引言 在当今瞬息万变的技术领域中&#xff0c;选择一门合适的编程语言对于个人职业发展和技术成长至关重要。每种语言都拥有独特的设计哲学、应用场景和市场需求&#xff0c;因此&#xff0c;在决定投入时间和精力去学习哪种编程语言时&#xff0c;我们需要综合分析多个因素&a…

在 Jupyter Notebook 中查看所使用的 Python 版本和 Python 解释器路径

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 我们在做 Python 开发时&#xff0c;有时在我们的服务器上可能安装了多个 Python 版本。 使用 conda info --envs 可以列出所有的 conda 环境。当在 Linux 服务器上使用 which python 命令时&#xff0…

绿盾限制终端网络访问权限会恢复后,别的网站访问正常就是无法访问钉钉网站和下载东西

环境&#xff1a; Win10 专业版 钉钉7.5.5 绿盾7.0 问题描述&#xff1a; 绿盾限制终端网络访问权限会恢复后&#xff0c;别的网站访问正常就是无法访问钉钉网站和下载东西 解决方案&#xff1a; 排查方法 1.重置浏览器或者更换浏览器测试&#xff08;未解决&#xff09…

游戏行业洞察:分布式开源爬虫项目在数据采集与分析中的应用案例介绍

前言 我在领导一个为游戏行业巨头提供数据采集服务的项目中&#xff0c;我们面临着实时数据需求和大规模数据处理的挑战。我们构建了一个基于开源分布式爬虫技术的自动化平台&#xff0c;实现了高效、准确的数据采集。通过自然语言处理技术&#xff0c;我们确保了数据的质量和…

Flutter插件开发指南02: 事件订阅 EventChannel

Flutter插件开发指南02: 事件订阅 EventChannel 视频 https://www.bilibili.com/video/BV1zj411d7k4/ 前言 上一节我们讲了 Channel 通道&#xff0c;但是如果你是卫星定位业务&#xff0c;原生端主动推消息给 Flutter 这时候就要用到 EventChannel 通道了。 本节会写一个 1~…

Maven setting.xml 配置

目的&#xff1a;可以把我们书写的jar包发布到maven私有仓库&#xff0c;简称私仓 1. 打开云效 2.点击 非生产库-snapshot mave release仓库与snapshot仓库区别&#xff1f; 在软件开发中&#xff0c;"Maven release 仓库"和"Maven snapshot 仓库"是两种…

[极客大挑战2019]upload

该题考点&#xff1a;后缀黑名单文件内容过滤php木马的几种书写方法 phtml可以解析php代码&#xff1b;<script language"php">eval($_POST[cmd]);</script> 犯蠢的点儿&#xff1a;利用html、php空格和php.不解析<script language"php"&…

AI文生图网站测评

主要测评文章配图生成效果、绘制logo等效果 测评关键点&#xff1a;生成效果、网站易用度、是否免费 测评prompt&#xff1a;请生成一个文章内容配图&#xff0c;图片比例是3&#xff1a;2&#xff0c;文章主旨是AI既是机遇&#xff0c;也存在挑战和风险&#xff0c;要求图片…

PyTorch概述(二)---MNIST

NIST Special Database3 具体指的是一个更大的特殊数据库3&#xff1b;该数据库的内容为手写数字黑白图片&#xff1b;该数据库由美国人口普查局的雇员手写 NIST Special Database1 特殊数据库1&#xff1b;该数据库的内容为手写数字黑白图片&#xff1b;该数据库的图片由高…

Jetson Xavier NX 与笔记本网线连接 ,网络共享,ssh连接到vscode

Jetson Xavier NX 与笔记本网线连接 &#xff0c;网络共享&#xff0c;ssh连接到vscode Jetson Xavier NX桌面版需要连接显示屏、鼠标和键盘&#xff0c;操作起来并不方便&#xff0c;因此常常需要ssh远程连接到本地笔记本电脑&#xff0c;这里介绍一种连接方式&#xff0c;通过…

linux安装sqoop

目录 下载配置 下载 本地下载好上传&#xff0c;解压&#xff0c;重命名&#xff0c;注意路径 tar -zxvf /opt/sqoop/sqoop-1.4.6.tar.gz -C /opt/ mv /opt/sqoop-1.4.6.bin__hadoop-2.0.4-alpha /opt/sqoop配置 环境变量 echo export SQOOP_HOME/opt/sqoop/ >> /etc…