当前位置: 首页 > news >正文

数据结构day06(单向循环链表、双向链表)

双向链表的练习代码

head.h

#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef int database;
typedef struct double_link_list{union{database data;int len;};struct double_link_list* pre;struct double_link_list* next;}dbLinkList,*dbLinkListp;dbLinkListp head_create();
dbLinkListp create(database data);
int head_insert(dbLinkListp head,database data);
int tail_insert(dbLinkListp head,database data);
int output(dbLinkListp head);
int head_delete(dbLinkListp head);
int tail_delete(dbLinkListp head);
int pos_insert(dbLinkListp head,int pos,database data);
int pos_delete(dbLinkListp head,int pos);#endif

fun.c

#include "head.h"
/** function:    头结点创建* @param [ in] * @param [out] * @return      */
dbLinkListp head_create(){dbLinkListp head=(dbLinkListp)malloc(sizeof(dbLinkList));if(NULL==head){puts("malloc is NULL,failed");return NULL;}head->pre=NULL;head->next=NULL;head->len=0;return head;
}
/** function:    创建节点* @param [ in] * @param [out] * @return      */
dbLinkListp create(database data){dbLinkListp new=(dbLinkListp)malloc(sizeof(dbLinkList));if(NULL==new){puts("malloc is NULL,failed");return NULL;}new->data=data;new->pre=NULL;new->next=NULL;puts("node create success");return new;
}
/** function:    判空* @param [ in] * @param [out] * @return      */
int void_point(dbLinkListp head){if(NULL==head){puts("----why give me a null head point----");return -1;}return 0;
}
/** function:    头插* @param [ in] * @param [out] * @return      */
int head_insert(dbLinkListp head,database data){if(void_point(head))return -1;//头插dbLinkListp new=create(data);new->next=head->next;if(head->next!=NULL)new->next->pre=new;head->next=new;new->pre=head;head->len++;puts("head insert success");return 0;
}
/** function:    尾插* @param [ in] * @param [out] * @return      */
int tail_insert(dbLinkListp head,database data){if(void_point(head))return -1;//尾插dbLinkListp p=head;while(p->next!=NULL)p=p->next;dbLinkListp new=create(data);new->next=p->next;new->pre=p;p->next=new;head->len++;puts("tail insert success.");return 0;
}
/** function:    输出* @param [ in] * @param [out] * @return      */
int output(dbLinkListp head){if(void_point(head))return -1;while(head->next!=NULL){printf("%d\t",head->next->data);head=head->next;}puts("output done");return 0;
}
/** function:   头删* @param [ in] * @param [out] * @return      */
int head_delete(dbLinkListp head){if(void_point(head))return -1;if(head->next==NULL){puts("there is no assignment to delete.");return -1;}dbLinkListp del=head->next;if(head->next->next!=NULL)head->next->next->pre=head;head->next=head->next->next;free(del);del=NULL;head->len--;puts("head_delete success");return 0;
}
/** function:    尾删* @param [ in] * @param [out] * @return      */
int tail_delete(dbLinkListp head){if(void_point(head))return -1;if(head->next==NULL){puts("there is no assignment to delete.");return -1;}dbLinkListp p=head;//找到倒数第一个while(p->next!=NULL){p=p->next;}p->pre->next=p->next;free(p);p=NULL;head->len--;puts("tail delete success");return 0;
}
/** function:    指定位置插入* @param [ in] * @param [out] * @return      */
int pos_insert(dbLinkListp head,int pos,database data){if(void_point(head))return -1;//判断位置合理性if(pos<1||pos>head->len+1){puts("your position is illegal");return -1;}dbLinkListp p=head;//找到指定位置前一位while(pos--!=1){p=p->next;}dbLinkListp new=create(data);if(p->next!=NULL){new->next=p->next->next;p->next->next->pre=new;}new->pre=p;p->next=new;head->len++;puts("pos insert success");return 0;
}
/** function:    指定位置删除* @param [ in] * @param [out] * @return      */
int pos_delete(dbLinkListp head,int pos){if(void_point(head))return -1;if(head->next==NULL){puts("there is no assignment to delete.");return -1;}//判断位置合理性if(pos<1||pos>head->len){puts("your position is illegal");return -1;}dbLinkListp p=head;//找到指定位置前一位while(pos--!=1){p=p->next;}printf("pos-1=%d\t",p->data);//删除dbLinkListp del=p->next;p->next=p->next->next;if(p->next!=NULL)p->next->pre=p;free(del);del=NULL;puts("pos delete success");return 0;
}

main.c

#include "head.h"
int main(int argc, const char *argv[])
{dbLinkListp head=head_create();head_insert(head,9);head_insert(head,8);head_insert(head,6);head_insert(head,5);tail_insert(head,7);output(head);//head_delete(head);//tail_delete(head);//pos_insert(head,6,66);//pos_delete(head,5);output(head);return 0;
}

今日思维导图哈

​​​​​​​

相关文章:

数据结构day06(单向循环链表、双向链表)

双向链表的练习代码 head.h #ifndef __HEAD_H__ #define __HEAD_H__ #include <stdio.h> #include <stdlib.h> #include <string.h> typedef int database; typedef struct double_link_list{union{database data;int len;};struct double_link_list* pre;…...

zabbix -- 新建主机

目录 一、新建主机 二、新建监控项 IP主机192.168.136.55zabbix控制端/服务端192.168.136.56zabbix被控端/客户端 一、新建主机 主机参数 名称、群组&#xff08;每台主机必须属于某个主机组内&#xff09;、ip、端口 创建完成&#xff0c;如果你的ZBX为灰色&#xff0c;代…...

=>符号含义

>主要有两方面的作用&#xff0c;一个限制属性状态&#xff0c;另一个简化匿名委托和Lambda 用法一&#xff1a;定义只读属性 public class ManPeople { public string Sex > "男";public string Name { get; set; }}public class WomanPeople { publi…...

Docker+Jenkins(blueocean)+Gitee构建CICD流水线实战

一、配置JDK 1.1 编辑profile文件 vim /etc/profile export JAVA_HOME/home/jdk/jdk1.8.0_301 export JRE_HOME$JAVA_HOME/jre export CLASSPATH.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib export PATH$PATH:$JAVA_HOME/bin:$JRE_HOME/bin 1.2 使配置生效 source /etc/pro…...

Redis快速入门

文章目录 0. Redis介绍1. Centos下Redis安装2. redis.conf配置文件介绍3. redis相关命令4.redis中发布订阅和事务4.1 发布订阅&#xff08;Pub/Sub&#xff09;4.2 事务 5. redis封装系统服务6. 问题与解决6.1 启动Redis报错&#xff1a;Could not create Server TCP listening…...

EasyExcel 修改导出的文件属性

EasyExcel 修改导出的文件属性 导出的文件有多种属性,本文只针对sheet名称进行举例 需要自定义拦截器 ExcelWriter excelWriter EasyExcel.write(fileName).withTemplate(stream).registerWriteHandler(new TemplateSheetStrategyHandler()).build()registerWriteHandler (n…...

电子班牌云平台系统——智慧校园管理工具,多媒体信息发布、走班排课、家校互通、物联控制、教务管理、考勤管理、素质评价、日常办公

电子班牌云平台源码&#xff0c;saas模式微服务架构 电子班牌是一款智慧校园管理工具&#xff0c;也是校园多媒体展示平台。智慧班牌融合了多媒体信息发布、走班排课、家校互通、物联控制、教务管理、考勤管理、素质评价、日常办公等一系列应用&#xff0c;是校园管理的现代化手…...

docker-compose 部署 Seata整合nacos,Postgresql 为DB存储

docker-compose 部署 Seata整合nacos,Postgresql 为DB存储 环境 详情环境可参考 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 我这里 <spring.cloud.alibaba-version>2021.1</spring.cloud.alibaba-version>所…...

three.js 场景中如何彻底删除模型和性能优化

three.js 场景中如何彻底删除模型和性能优化 删除外部模型 在three.js场景中&#xff0c;要彻底删除外部模型&#xff0c;需要执行以下几个步骤&#xff1a; 从场景中移除模型 你可以使用 scene.remove(model) 或者 scene.remove(model.children[0]) 将模型从场景中移除。如果…...

Bridge Champ举办人机对战赛:NFT游戏与传统竞技共生发展编织新格局

概要 现在,NFT与体育竞技正日益紧密地联系在一起。一些体育项目开始推出与赛事或球队相关的NFT,同时也有部分NFT游戏开始举办电子竞技赛事。这种共生发展正在改变体育竞技的生态。 笔者采访了桥牌冠军项目相关负责人,探讨NFT游戏与传统体育竞技的融合潜力。桥牌冠军近期成功举…...

Visual Studio软件_MSC_VER值(MSVC编译器版本)的获取方法

本文介绍查看Visual Studio软件_MSC_VER值的方法。 _MSC_VER是微软公司推出的C/C 编译器——MSVC编译器的一个内置宏&#xff0c;其值表示当前Visual Studio软件中MSVC编译器的具体版本。不同的Visual Studio软件版本对应着不同的MSVC编译器版本——无论是不同发布年份的版本&…...

02-Linux-IO多路复用之select、poll和epoll详解

前言&#xff1a; 在linux系统中&#xff0c;实际上所有的 I/O 设备都被抽象为了文件这个概念&#xff0c;一切皆文件&#xff0c;磁盘、网络数据、终端&#xff0c;甚至进程间通信工具管道 pipe 等都被当做文件对待。 在了解多路复用 select、poll、epoll 实现之前&#xff…...

echo、print_r、print、var_dump 、die

die()和exit()函数都有终止线程的作用 是php断点调试需要使用的最主要的函数 die()函数一般与“or”一并使用&#xff0c;写作“or die()” var_dump()和print_r() var_dump() 显示关于一个或多个表达式的结构信息&#xff0c;包括表达式的类型与值。数组将递归展开值&#…...

【LeetCode75】第四十四题 省份数量

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们一个二维数组&#xff0c;表示城市之间的连通情况&#xff0c;连在一起的城市为一个省份&#xff0c;问我们一共有多少个省份。 这…...

把DTC从Excel导入cdd的方法

本文是基于CANdelaStudio12.0讲解 问题一&#xff1a;当导入DTC的xxx.cdi文件报如下红色错误 可能原因&#xff1a;在设置具有下拉框的属性的内容时&#xff0c;输入的内容不在下拉框列表中 解决办法:在.cddt文件中更新“”Error Code Table“”内容&#xff0c;把新的选项更新…...

养猪废水处理设备的处理方法

诸城市鑫淼环保小编带大家了解一下养猪废水处理设备的处理方法 1.高有机负荷&#xff1a;猪粪尿含有大量有机物质&#xff0c;比如蛋白质、脂肪和淀粉等&#xff0c;这些有机物在水体中分解会消耗氧气&#xff0c;导致水体缺氧。 2.高氨氮含量&#xff1a;猪粪尿中的蛋白质分解…...

【React】React学习:从初级到高级(三)

3 状态管理 随着应用不断变大&#xff0c;应该更有意识的去关注应用状态如何组织&#xff0c;以及数据如何在组件之间流动。冗余或重复的状态往往是缺陷的根源。 3.1 用State响应输入 3.1.1 声明式地考虑UI 总体步骤如下&#xff1a; 定位组件中不同的视图状态 确定是什么…...

Rest和Http什么关系?

分析&回答 REST 定义了一组体系架构原则&#xff0c;您可以根据这些&#xff0c;包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态。 REST只是一种风格&#xff0c;不是一种标准REST是以资源为中心的 用不同的 HTTP 请求方法来处理对资源的 CRUD&#xff0…...

leetcode原题: 生存人数

题目&#xff1a; 给定 N 个人的出生年份和死亡年份&#xff0c;第 i 个人的出生年份为 birth[i]&#xff0c;死亡年份为 death[i]&#xff0c;实现一个方法以计算生存人数最多的年份。 你可以假设所有人都出生于 1900 年至 2000 年&#xff08;含 1900 和 2000 &#xff09;…...

K8S的介绍和架构

仅供入门 K8S的介绍和架构 一. 什么是kubernetes二、Kubernetes架构和组件 2.1 核心组件 2.1.1 Kubernetes Master控制组件&#xff0c;调度管理整个系统&#xff08;集群&#xff09;&#xff0c;包含如下组件: a、Kubernetes API Serverb、Kubernetes Schedulerc、Kubernet…...

为AI智能体项目选择稳定且多模型的后端API供应商

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为AI智能体项目选择稳定且多模型的后端API供应商 在开发AI智能体或自动化工作流时&#xff0c;工程师们面临的核心挑战之一是如何为…...

CircuitPython库管理实战:从安装优化到API深度应用

1. 项目概述与核心价值在嵌入式硬件开发的世界里&#xff0c;CircuitPython以其极低的入门门槛和“即写即得”的交互体验&#xff0c;成为了连接创意与现实的绝佳桥梁。无论是点亮第一颗LED&#xff0c;还是驱动复杂的传感器网络&#xff0c;其丰富的库生态系统都是项目成功的基…...

高层次综合设计算法-常见问题记录(一)

一、算法设计思考的重点 1.定点化的陷阱 整数部分数据位宽不足造成的溢出&#xff1b; 舍入导致图像的视觉差异&#xff1b; 小数部分位宽不足导致精度不够&#xff0c;或者效果不佳&#xff1b;2.pipelin流水线的设计 普通变量造成的数据依赖问题&#xff0c;导致II达不到&…...

[STM32U3] 【STM32U385RG 测评】+ PWM调节控制LED

在厂家提供的例程中&#xff0c;提供了多个PWM通道输出固定占空比的示例&#xff0c;但缺少改变占空比的介绍。为此&#xff0c;作了一下自动改变占空比和按键改变占空比的尝试。这采用的是以PWM通道1输出脉冲来控制外挂LED模块的亮度&#xff0c;通道1的输出引脚为PA0&#xf…...

Elasticsearch 7.6.1 实战:从零构建招聘信息搜索服务(索引、数据与分页)

1. 从零搭建招聘搜索服务&#xff1a;为什么选择Elasticsearch&#xff1f; 最近在帮朋友改造招聘网站的后台搜索功能时&#xff0c;我果断推荐了Elasticsearch 7.6.1。这个版本在稳定性和功能完整性上达到了很好的平衡&#xff0c;特别适合中小型企业的搜索场景。相比传统数据…...

告别虚拟机卡顿:在VMware 17上为RHEL 9.2分配CPU和内存的黄金法则

告别虚拟机卡顿&#xff1a;在VMware 17上为RHEL 9.2分配CPU和内存的黄金法则 当你在VMware Workstation 17上运行RHEL 9.2时&#xff0c;是否经常遇到编译速度慢、桌面响应延迟甚至整个系统卡死的情况&#xff1f;这很可能是因为你没有根据宿主机的实际硬件情况科学分配虚拟资…...

5分钟搞定Android Studio中文界面:免费汉化插件完整指南

5分钟搞定Android Studio中文界面&#xff1a;免费汉化插件完整指南 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为Androi…...

数据冗余与规范化的本质[数据库原理]

我们把它想象成整理一个乱七八糟的杂物间的过程。我们的目标是把所有东西分门别类放好&#xff0c;让找东西、放东西、更新东西都变得轻松&#xff0c;并且避免重复占用空间。 第一部分&#xff1a;为什么要“规范化”&#xff1f;—— 解决“大杂烩”表的三大痛点 假设我们管…...

EFFACT架构:全同态加密硬件加速的创新设计

1. EFFACT架构概述&#xff1a;当硬件设计遇上全同态加密在密码学加速器的世界里&#xff0c;我们一直在寻找一个平衡点——如何在有限的芯片面积和功耗预算下&#xff0c;处理那些看似无解的复杂计算&#xff1f;EFFACT架构的诞生&#xff0c;正是为了解决全同态加密&#xff…...

【LeetCode】50. pow(x,n) 题解

【LeetCode】50. pow(x,n)\text{pow}(x,n)pow(x,n) 题解 Link: https://leetcode.cn/problems/powx-n/ 实现 pow(x, n) &#xff0c;即计算 xxx 的整数 nnn 次幂函数&#xff08;即 xnx^nxn&#xff09;。 其中 xxx 是浮点数&#xff0c;nnn 是可正可负的 323232 位有符号整…...