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

建网站企业/网址怎么创建

建网站企业,网址怎么创建,长沙人才招聘网长沙58同城招聘网,网站内页banner目录 一.链表的基本概念和结构 二.链表的分类 三.单链表的基本操作 1.创建一个节点 2.打印 3.尾插 4.头插 5.尾删 6.头删 7.查找 8.指定位置插入 9.指定位置删除 10.销毁 一.链表的基本概念和结构 概念:链表是一种物理存储结构上非连续、非顺序的存储结…

目录

一.链表的基本概念和结构

二.链表的分类

三.单链表的基本操作 

1.创建一个节点

2.打印

3.尾插

4.头插

5.尾删

6.头删

7.查找

8.指定位置插入

9.指定位置删除

10.销毁


一.链表的基本概念和结构

        概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

        结构:链表是有各个节点通过指针连接在一起的,每个节点分为数据域和指针域,每个节点的指针域指向下一个节点的地址,最后一个节点的指针域为空。

逻辑结构如下图所示

        

        物理结构:逻辑结构看起来是连续的,但是由于链表的节点是在堆上开辟的,地址可能连续,也可能不连续

二.链表的分类

        1.单向和双向:

        2. 带头和不带头

         3.循环和不循环

通过上面三种分类我们可以得知,组合起来链表总共有8中结构,但是我们经常使用的不带头无循环单链表和带头双向循环链表,此篇文章暂时只讨论第一种结构的基本操作

三.单链表的基本操作 

        单链表的基本操作有尾插、尾删、头插、头删、指定位置插入、指定位置删除、查找、销毁等操作,下面我们来实现这些操作

// 1、无头+单向+非循环链表增删查改实现
typedef int SLTDateType;
typedef struct SListNode
{
SLTDateType data;
struct SListNode* next;
}SListNode;
// 动态申请一个结点
SListNode* BuySListNode(SLTDateType x);
// 单链表打印
void SListPrint(SListNode* plist);
// 单链表尾插
void SListPushBack(SListNode** pplist, SLTDateType x);
// 单链表的头插
void SListPushFront(SListNode** pplist, SLTDateType x);
// 单链表的尾删
void SListPopBack(SListNode** pplist);
// 单链表头删
void SListPopFront(SListNode** pplist);
// 单链表查找
SListNode* SListFind(SListNode* plist, SLTDateType x);
// 单链表在pos位置之后插入x
void SListInsertAfter(SListNode* pos, SLTDateType x);
// 单链表删除pos位置之后的值
void SListEraseAfter(SListNode* pos);

1.创建一个节点

        链表和顺序表一样,依然是使用结构体来实现,然后利用动态内存管理函数开辟相应的空间,结构体含有一个数据变量和指针变量

SListNode* BuySListNode(SLTDateType x)//传入数据变量
{SListNode* newnode =(SListNode*)malloc(sizeof(SListNode));//开辟一个节点if (newnode == NULL)//检查是否开辟成功{perror("SLTBynode error");return NULL;}newnode->data = x;//将数据变量赋给datanewnode->next = NULL;//指针变量初始化为空指针return newnode;//返回开辟的节点地址
}

2.打印

        打印链表和打印顺序表思想相似,从前到后一次遍历每个节点并打印数据变量,链表访问下一个节点需要找到下一个节点的地址,而下一个的地址存储在当前指针指向的节点的指针域,所以要使指针的值改为当前节点的指针域,此时指针便指向了下一个节点了,即cur=cur->next,使指针指向下一个节点

void SListPrint(SListNode* plist)
{SListNode* cur = plist;//定义一个临时指针进行遍历,最好不要动头结点while (cur)//指针进行遍历,直到指针指向空即遍历结束{printf("%d->", cur->data);//打印链表数据变量cur = cur->next;//指针指向下一个节点}printf("NULL\n");
}

3.尾插

        尾插即将新节点插入到链表的尾部,插入过程:先调用开辟节点的函数开辟一个新节点,如果链表为空,则直接将头指针指向新节点,如果非空,链表的最后一个节点指针域通常为空,所以我们需要一个临时指针找到链表的最后一个节点,然后将最后的节点指针域指向新节点,如图所示

void SListPushBack(SListNode** pplist, SLTDateType x)
{SListNode* newnode = BuySListNode(x);//创建一个新节点if (*pplist == NULL){*pplist = newnode;//如果链表是空则直接将头结点指向新节点}else{SListNode* cur = *pplist;//定义一个临时指针,遍历找到尾节点while (cur->next)//直到最后一个节点结束{cur = cur->next;//指针往后走一个节点}cur->next = newnode;//将尾节点的指针域指向新节点}
}

4.头插

        链表的头插即将新节点插入到链表最前面,成为链表的第一个节点,插入过程:先调用开辟节点的函数创建一个新节点,若链表为空,则直接将头结点直接指向新节点,若非空,将新节点的指针域指向第一个节点,然后将链表的头指针指向新节点,如图所示

void SListPushFront(SListNode** pplist, SLTDateType x)
{SListNode* newnode = BuySListNode(x);//开辟新节点if (*pplist == NULL){*pplist = newnode;//若链表为空表,则直接将头指针指向新节点}else{newnode->next = *pplist;//新节点的指针域指向链表*pplist = newnode;//头指针指向新向新节点}
}

5.尾删

        链表的尾删即删去链表的最后一个节点,删除过程:先判断链表是否为空,为空则不能删除,我们用assert断言函数检查链表是否为空表,若非空,如果只有一个节点,我们只需要删除这个节点然后将头指针置空,如果不止一个节点,我们需要找到最后一个节点的前面的一个几点,然后通过前一个的节点指针域释放最后一个节点,此时前一个节点变成新的最后一个节点,因此我们需要将其指针域置空,如图所示

void SListPopBack(SListNode** pplist)
{assert(*pplist);//判断链表是否为空SListNode* cur = *pplist;//定义临时指针,用来找到最后一个节点的前一个节点if ((*pplist)->next == NULL)//判断是否只有一个节点{free(*pplist);//删除这个节点*pplist = NULL;//头指针置空}else{while (cur->next->next)//遍历到最后一个节点的前一个节点{cur = cur->next;}free(cur->next);//删除最后一个元素cur->next = NULL;//前一个节点已成新的最后一个元素,指针域置空}
}

6.头删

        链表的头删即删去链表的第一个节点,删除过程:先判断链表是否为空,为空则不能删除直接退出函数,如果只有一个节点,则直接将该节点删除,然后将头指针置空,如果不止一个节点,则需要一个临时指针指向第二个节点,通过头指针将第一个元素删除,此时第二个节点成为新的第一个节点,然后将头指针指向临时指针,即头指针指向新的第一个节点,如图所示

void SListPopFront(SListNode** pplist)
{assert(*pplist);//判断链表是否为空SListNode* cur = *pplist;//定义临时指针指向第二个节点if ((*pplist)->next == NULL)//判断是否只有一个节点{free(*pplist);//删除该节点*pplist = NULL;//头指针置空}else{cur= cur->next;//临时指针指向第二个节点free(*pplist);//删除第一个节点*pplist = cur;//头指针指向第二个节点}
}

7.查找

        链表的查找和顺序表思想相似,从前往后遍历每个节点的数据与查找的数据相比较,相等则返回该节点的地址,找不到则返回NULL

SListNode* SListFind(SListNode* plist, SLTDateType x)
{SListNode* cur = plist;//定义临时指针遍历链表while (cur)//临时指针为空则遍历结束{if (cur->data == x)//节点的数据和查找的数据比较return cur;//返回该节点的地址cur = cur->next;//临时指针往后走一个节点}return NULL;//没有找到则返回空
}

8.指定位置插入

        链表指定位置一般是在指定位置后面插入元素,插入元素过程:先判断位置是否合法,在创建一个新节点,然后通过给定位置的next找到后面一个节点,然后将新节点的指针域指向后面一个节点,然后指定位置指针域指向新节点,如图所示

         特别值得注意的是,图中的1和2顺序不能倒过来,如果倒过来,即先让指定位置指针域先指向新指针,就找不到指定位置的后一个节点了

void SListInsertAfter(SListNode* pos, SLTDateType x)
{assert(pos);//判断位置是否合法SListNode*newnode=BuySListNode(x);//创建新节点newnode->next = pos->next;//新节点指针域指向指定位置后一个节点pos->next = newnode;//指定位置指针域指向新节点
}

9.指定位置删除

        链表的指定位置删除一般是删除指定位置之后的节点,删除过程:先判断位置是否合法,然后需要定义一个临时指针找到给定位置的后一个节点,然后将指定位置指针域指向要删除的节点后一个节点,然后再删除指定位置后一个节点,如图所示

void SListEraseAfter(SListNode* pos)
{assert(pos&&pos->next);//判断位置是否合法SListNode* cur = pos->next;//定义临时指针指向指定位置的后一个节点pos->next = pos->next->next;//让指定位置指针域指向要删除节点的后一个接地那free(cur);//删除指定位置后一个节点
}

10.销毁

        单链表的销毁需要两个临时指针,第一个指针指向前面一个元素,第二个指针指向后一个元素,依次从前往后遍历,删除掉第一个指针指向的节点,然后第一个指针指向第二个指针指向的节点,第二个指针往后走一个节点,然后继续删除掉第一个指针指向的节点,知道第二指针指向为空,此时第一个指针指向最后一个节点,再继续删除掉第一个指针指向的节点,即全部删除完成

void SListDestroy(SListNode* plist)
{SListNode* cur = plist;//定义第一个临时指针,指向相对前一个节点SListNode* next = plist;//定义第二个临时指针,指向相对前一个节点while (next)//遍历,直到第二个节点指向空{cur = next;next = next->next;free(cur);}
}

        以上就是单链表的一些基本操作,下面看全部代码:

SList.c

#include"SList.h"
SListNode* BuySListNode(SLTDateType x)//传入数据变量
{SListNode* newnode =(SListNode*)malloc(sizeof(SListNode));//开辟一个节点if (newnode == NULL)//检查是否开辟成功{perror("SLTBynode error");return NULL;}newnode->data = x;//将数据变量赋给datanewnode->next = NULL;//指针变量初始化为空指针return newnode;//返回开辟的节点地址
}
void SListPrint(SListNode* plist)
{SListNode* cur = plist;//定义一个临时指针进行遍历,最好不要动头结点while (cur)//指针进行遍历,直到指针指向空即遍历结束{printf("%d->", cur->data);//打印链表数据变量cur = cur->next;//指针指向下一个节点}printf("NULL\n");
}
void SListPushBack(SListNode** pplist, SLTDateType x)
{SListNode* newnode = BuySListNode(x);//创建一个新节点if (*pplist == NULL){*pplist = newnode;//如果链表是空则直接将头结点指向新节点}else{SListNode* cur = *pplist;//定义一个临时指针,遍历找到尾节点while (cur->next)//直到最后一个节点结束{cur = cur->next;//指针往后走一个节点}cur->next = newnode;//将尾节点的指针域指向新节点}
}
void SListPushFront(SListNode** pplist, SLTDateType x)
{SListNode* newnode = BuySListNode(x);//开辟新节点if (*pplist == NULL){*pplist = newnode;//若链表为空表,则直接将头指针指向新节点}else{newnode->next = *pplist;//新节点的指针域指向链表*pplist = newnode;//头指针指向新向新节点}
}
void SListPopBack(SListNode** pplist)
{assert(*pplist);//判断链表是否为空SListNode* cur = *pplist;//定义临时指针,用来找到最后一个节点的前一个节点if ((*pplist)->next == NULL)//判断是否只有一个节点{free(*pplist);//删除这个节点*pplist = NULL;//头指针置空}else{while (cur->next->next)//遍历到最后一个节点的前一个节点{cur = cur->next;}free(cur->next);//删除最后一个元素cur->next = NULL;//前一个节点已成新的最后一个元素,指针域置空}
}
void SListPopFront(SListNode** pplist)
{assert(*pplist);//判断链表是否为空SListNode* cur = *pplist;//定义临时指针指向第二个节点if ((*pplist)->next == NULL)//判断是否只有一个节点{free(*pplist);//删除该节点*pplist = NULL;//头指针置空}else{cur= cur->next;//临时指针指向第二个节点free(*pplist);//删除第一个节点*pplist = cur;//头指针指向第二个节点}
}
SListNode* SListFind(SListNode* plist, SLTDateType x)
{SListNode* cur = plist;//定义临时指针遍历链表while (cur)//临时指针为空则遍历结束{if (cur->data == x)//节点的数据和查找的数据比较return cur;//返回该节点的地址cur = cur->next;//临时指针往后走一个节点}return NULL;//没有找到则返回空
}
void SListInsertAfter(SListNode* pos, SLTDateType x)
{assert(pos);//判断位置是否合法SListNode*newnode=BuySListNode(x);//创建新节点newnode->next = pos->next;//新节点指针域指向指定位置后一个节点pos->next = newnode;//指定位置指针域指向新节点
}
void SListEraseAfter(SListNode* pos)
{assert(pos&&pos->next);//判断位置是否合法SListNode* cur = pos->next;//定义临时指针指向指定位置的后一个节点pos->next = pos->next->next;//让指定位置指针域指向要删除节点的后一个接地那free(cur);//删除指定位置后一个节点
}
void SListDestroy(SListNode* plist)
{SListNode* cur = plist;//定义第一个临时指针,指向相对前一个节点SListNode* next = plist;//定义第二个临时指针,指向相对前一个节点while (next)//遍历,直到第二个节点指向空{cur = next;next = next->next;free(cur);}
}

SList.h

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
typedef int SLTDateType;
typedef struct SLT 
{SLTDateType data;struct SLT* next;
}SListNode;
//创建一个节点
SListNode* BuySListNode(SLTDateType x);
// 单链表打印
void SListPrint(SListNode* plist);
// 单链表尾插
void SListPushBack(SListNode** pplist, SLTDateType x);
// 单链表的头插
void SListPushFront(SListNode** pplist, SLTDateType x);
// 单链表的尾删
void SListPopBack(SListNode** pplist);
// 单链表头删
void SListPopFront(SListNode** pplist);
// 单链表查找
SListNode* SListFind(SListNode* plist, SLTDateType x);
// 单链表在pos位置之后插入x
void SListInsertAfter(SListNode* pos, SLTDateType x);
// 单链表删除pos位置之后的值
void SListEraseAfter(SListNode* pos);
// 单链表的销毁
void SListDestroy(SListNode* plist);

test.c

#include"SList.h"
void TestSList()
{SListNode* node = NULL;SListPushBack(&node, 1);SListPushBack(&node, 2);SListPushBack(&node, 3);SListPushBack(&node, 4);SListPushBack(&node, 5);SListPushFront(&node, 0);SListPopBack(&node);SListPopFront(&node);SListNode* pos=SListFind(node, 3);SListPrint(node);//SListInsertAfter(pos,100);//SListPrint(node);SListEraseAfter(pos);SListPrint(node);SListDestroy(node);
}
int main()
{TestSList();return 0;
}

输出结果:

        写是为了不停地思考,创作是为了更好地思考,种一棵树最好的时间是十年前,其次是现在。单链表就暂时学到这啦,如果对您有所帮助,欢迎一键三连~ 

相关文章:

单链表的基本操作

目录 一.链表的基本概念和结构 二.链表的分类 三.单链表的基本操作 1.创建一个节点 2.打印 3.尾插 4.头插 5.尾删 6.头删 7.查找 8.指定位置插入 9.指定位置删除 10.销毁 一.链表的基本概念和结构 概念&#xff1a;链表是一种物理存储结构上非连续、非顺序的存储结…...

【微信小程序-原生开发】系列教程目录(已完结)

01-注册登录账号&#xff0c;获取 AppID、下载安装开发工具、创建项目、上传体验 https://sunshinehu.blog.csdn.net/article/details/128663679 02-添加全局页面配置、页面、底部导航 https://sunshinehu.blog.csdn.net/article/details/128705866 03-自定义底部导航&#x…...

JavaEE--Thread 类的基本用法(不看你会后悔的嘿嘿)

Thread类是JVM用来管理线程的一个类,换句话说,每个线程都唯一对应着一个Thread对象. 因此,认识和掌握Thread类弥足重要. 本文将从 线程创建线程中断线程等待线程休眠获取线程实例 等方面来进行具体说明. 1)线程创建 方法1:通过创建Thread类的子类并重写run () 方法 class M…...

MySQL数据库基本使用(二)-------数据库及表的增删改查及字符集修改

1.MySQL数据库的使用演示 1.1创建自己的数据库 命令格式如下&#xff08;创建的数据库名称不能与已经存在的数据库重名&#xff09;&#xff1a; mysql> create database 数据库名;例如&#xff1a; mysql> create database atguigudb; #创建atguigudb数据库&#xf…...

互联网摸鱼日报(2023-03-17)

互联网摸鱼日报&#xff08;2023-03-17&#xff09; InfoQ 热门话题 开源新生代的成长之路&#xff1a;从校园到开源&#xff0c;需要迈过哪些挑战&#xff1f; 从 Clickhouse 到 Apache Doris&#xff0c;慧策电商 SaaS 高并发数据服务的改造实践 刚刚&#xff0c;百度文心…...

【前后端】低代码平台Jeecg-Boot 3.2宝塔云服务器部署流程

1 后端 部署流程 修改配置文件 更改数据库、redis的配置。 在system子模块中的target文件夹下生成 jar 包jeecg-boot-module-system-3.2.0.jar。 复制到云服务器 生成数据库 在这里插入图片描述 使用命令运行后端程序 java -jar ./jeecg-boot-module-system-3.2.0.jar宝…...

leetcode todolist

数组 数组的改变、移动 453. 最小移动次数使数组元素相等 665. 非递减数列 283. 移动零 数组的旋转 189. 旋转数组 396. 旋转函数 统计数组中的元素 645. 错误的集合 697. 数组的度 448. 找到所有数组中消失的数字 442. 数组中重复的数据 41. 缺失的第一个正数 数…...

改进YOLO系列 | CVPR2023最新 PConv | 提供 YOLOv5 / YOLOv7 / YOLOv7-tiny 模型 YAML 文件

DWConv是Conv的一种流行变体,已被广泛用作许多神经网络的关键构建块。对于输入 I ∈ R c h w I \in R^{c \times h \times w} I∈...

像ChatGPT玩转Excel数据

1.引言 最近ChatGPT的出现&#xff0c;把人工智能又带起了一波浪潮。机器人能否替代人类又成了最近热门的话题。 今天我们推荐的一个玩法和ChatGPT有点不一样。我们的课题是“让用户可以使用自然语言从Excel查询到自己想要的数据”。 要让自然语言可以从Excel中查数据&#…...

云原生之docker容器监控详解(cAdvisor、node exporter、prometheus)

docker容器监控一、前言二、cAdvisor2.1、安装cAdvisor2.2、使用Prometheus监控cAdvisor2.3、cAdvisor暴露的Prometheus指标三、Node Exporter3.1、安装Node Exporter3.2、指标四、Prometheus4.1、安装4.2、规则配置4.3、报警管理器五、grafana一、前言 cAdvisor源码 node exp…...

<Linux>进程概念

文章目录一、什么是进程1.进程概念2.进程描述 – PCB3.task_struct内容分类二、进程的基本操作1.查看进程2.结束进程3.通过系统调用获取进程标示符4.通过系统调用创建子进程(fork)三、进程状态1.普遍的操作系统状态2.Linux操作系统状态四、两种特殊的进程1.僵尸进程2.孤儿进程五…...

数据结构——顺序表

文章目录&#x1f428;0. 前言&#x1f388;1. 顺序表的概念及定义&#x1fa81;2. 接口的声明&#x1fa84;3. 接口的实现&#x1f345;3.1 为何使用断言&#xff1f;&#x1f352;3.2 初始化与销毁&#x1f353;3.3 尾插与尾删&#x1f349;3.4 头插与头删&#x1f379;3.5 指…...

闪存系统性能优化方向集锦?AC timing? Cache? 多路并发?

1. 从Flash系统的性能提升说起从消费级产品到数据中心企业级场景&#xff0c;NAND Flash凭借其高性能、大容量、低功耗以及低成本等特性大受欢迎&#xff0c;是目前应用最为广泛的半导体非易失存储介质。为了满足业务场景越来越严苛的性能要求&#xff0c;人们想了许多方法来提…...

【每日一题】——网购

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e2; 读书笔记 &#x1f7e1; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…...

百度终于要出手了?文心一言

文心一言 百度全新一代知识增强大语言模型&#xff0c;文心大模型家族的新成员&#xff0c;能够与人对话互动&#xff0c;回答问题&#xff0c;协助创作&#xff0c;高效便捷地帮助人们获取信息、知识和灵感。 前几天炒的风风火火的ChatGPT&#xff0c;虽然 ChatGPT 很强大&a…...

8年Java架构师面试官教你正确的面试姿势,10W字面试题带你成功上岸大厂

从最开始的面试者变成现在的面试官&#xff0c;工作多年以及在面试中&#xff0c;我经常能体会到&#xff0c;有些面试者确实是认真努力工作&#xff0c;但坦白说表现出的能力水平却不足以通过面试&#xff0c;通常是两方面原因&#xff1a; 1、“知其然不知其所以然”。做了多…...

Mybatis-Plus详解

简介MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window)的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。特性&#xff08;官网提供&#xff09;无侵入&#xff1a;只做增强…...

购物清单(蓝桥杯C/C++省赛)

目录 1 问题描述 2 文件的读取格式 3 代码实现 1 问题描述 小明刚刚找到工作&#xff0c;老板人很好&#xff0c;只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦&#xff0c;但又不好推辞。 这不&#xff0c;XX大促销又来了&#xff01;老板…...

【蓝桥杯集训·每日一题】AcWing 4496. 吃水果

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴求组合数一、题目 1、原题链接 4496. 吃水果 2、题目描述 n 个小朋友站成一排&#xff0c;等着吃水果。 一共有 m 种水果&#xff0c;每种水果的数量都足够多。 现在&…...

selenium(6)-----unittest框架

unittest框架 1)测试固件 1)setUp()是用来初始化测试环境所做的工作 2)tearDown()是用来清理环境所做的工作 2)测试套件 把不同的测试脚本&#xff0c;不同类中的测试用例给组织起来放到一个测试套中执行 3)测试用例的要以test_开头 4)如何使用unittest框架 只需要在脚本中定义…...

统计软件与数据分析--Lesson3

dataframe数据常用python操作dataframe数据常用知识点1.创建dataframe1.1使用字典创建DataFrame&#xff1a;1.2使用列表创建DataFrame&#xff1a;1.3使用numpy数组创建DataFrame&#xff1a;1.4从TXT文件中创建DataFrame&#xff1a;1.5从CSV文件中创建DataFrame&#xff1a;…...

竞赛无人机搭积木式编程——以2022年TI电赛送货无人机一等奖复现为例学习(7月B题)

在学习本教程前&#xff0c;请确保已经学习了前4讲中无人机相关坐标系知识、基础飞行控制函数、激光雷达SLAM定位条件下的室内定点控制、自动飞行支持函数、导航控制函数等入门阶段的先导教程。 同时用户在做二次开发自定义的飞行任务时&#xff0c;可以参照第5讲中2021年国赛植…...

oracle基础操作

oracle基础操作语法&#xff1a; 1、查询会话 SQL> select count(*) from v$session;2、增大连接数 SQL> alter system set processes5000 scope spfile;3、增大会话数 SQL> alter system set sessions7552 scopespfile;4、查询 参数&#xff1a; SQL> sho…...

python爬虫数据写入excel

在Jmeter118中描述了如何将接口请求的响应数据写入到csv中&#xff0c;同样的接口如果采用python写法&#xff0c;会简便很多&#xff0c;主要是用到了python中的pandas库#爬取展台数据import requestsimport pandas as pdurlhttps://ficonline.cfaa.cn/Exhibition/searchExhib…...

优思学院|六西格玛DMAIC,傻傻搞不清?

DMAIC还是搞不清&#xff1f; DMAIC是一个用于过程改进和六西格玛的问题解决方法论。它是以下五个步骤的缩写&#xff1a; 定义&#xff08;Define&#xff09;&#xff1a;明确问题&#xff0c;设定项目的目标和目的。绘制流程图&#xff0c;并收集数据&#xff0c;以建立未来…...

【Linux】网络编程套接字(下)

&#x1f387;Linux&#xff1a; 博客主页&#xff1a;一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 看似不起波澜的日复一日&#xff0c;一定会在某一天让你看见坚持…...

【Linux网络】网络编程套接字(上)

&#x1f387;Linux&#xff1a; 博客主页&#xff1a;一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 看似不起波澜的日复一日&#xff0c;一定会在某一天让你看见坚持…...

十二、51单片机之DS1302

1、DS1302简介 (1)详情查看数据手册。 (2)管角描述 管教名称功能1Vcc2双供电配置中的主电源供电引脚2X1与标准的32.768kHz晶振相连。用于ds1302记时。3X24GND电源地5CE输入信号&#xff0c;CE信号在读写时必须保持高电平6I/O输入/推挽输出I/O&#xff0c;是三线接口的双向数…...

ChatGPT-4震撼发布

3月15日消息&#xff0c;美国当地时间周二&#xff0c;人工智能研究公司OpenAI发布了其下一代大型语言模型GPT-4&#xff0c;这是其支持ChatGPT和新必应等应用程序的最新AI大型语言模型。该公司表示&#xff0c;该模型在许多专业测试中的表现超出了“人类水平”。GPT-4, 相较于…...

HTML樱花飘落

樱花效果 FOR YOU GIRL 以梦为马&#xff0c;不负韶华 LOVE YOU FOREVER 实现代码 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head><meta http-equiv"…...