数据结构 | 线性表
🔥Go for it!🔥
📝个人主页:按键难防
📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀📖系列专栏:数据结构与算法
🔥 如果感觉博主的文章还不错的话,还请 点赞👍🏻收藏⭐️ + 留言📝支持 一下博主哦
目录
一.线性表
①顺序表(顺序存储)
具体操作
1.顺序表插入元素:
2.顺序表删除元素:
3.遍历查找(按值):
②链表(链式存储)
1.单链表
①单链表定义:
②头插法:
③尾插法:
具体操作
①按位查找(遍历):
②按值查找:
③插入元素:
④删除操作
一.线性表
定义:由n(n≥0)个相同类型的元素组成的有序集合。(L=a1, a2, … , ai , ai+1, … , an)
线性表中元素个数n,称为线性表的长度。当n=0时,为空表。
a1是唯一的"第一个"数据元素,an是唯一的“最后一个”数据元素。
ai-1为a的直接前驱,ai+1为a的直接后继。
特点:
表中元素的个数是有限的。
表中元素的数据类型都相同。意味着每一个元素占用相同大小的空间
表中元素具有逻辑上的顺序性,在序列中各元素排序有其先后顺序
线性表第一个元素的位序是1,下标是0。
线性表是逻辑结构,表示元素之间一对一的相邻关系,用存储结构实现线性表就是顺序表或链表。
①顺序表(顺序存储)
用顺序存储的方式实现线性表
定义方法(静态版本):
#define MaxSize 50 //定义线性表的长度
typedef int ElemType;//重定义线性表中每个元素的类型,便于修改
typedef struct{ElemType data[MaxSize];//顺序表int len;//记录顺序表的当前长度
}SqList;//顺序表的类型定义
优点:可以随机存取(根据表头元素地址和序号)表中任意一个元素。存储密度高,每个结点只存储数据元素。
缺点: 插入和删除操作需要移动大量元素。线性表变化较大时,难以确定存储空间的容量。存储分配需要一整段连续的存储空间,不路灵活。
具体操作
1.顺序表插入元素:
#define MaxSize 50 //定义线性表的长度
typedef int ElemType;//重定义线性表中每个元素的类型,便于修改
typedef struct{ElemType data[MaxSize];//顺序表int len;//记录顺序表的当前长度
}SqList;//顺序表的类型定义
bool ListInsert(SqList &L, int i, ElemType e)
{//判断i的范围是否有效if (i<1 || i>L.len + 1){return false;}if (L.len>MaxSize) //当前存储空间已满,不能插入 {return false;}for (int j = L.len; j >= i; j--){ //将第i个元素及其之后的元素后移L.data[j] = L.data[j - 1];}L.data[i - 1] = e; //在位置i处放入eL.len++; //长度加1return true;
}
void PrintfList(SqList L)
{int i =0;for (i = 0; i < L.len; i++){printf("%d",L.data[i]);}printf("\n");
}
int main()
{SqList L;bool ret;//布尔类型返回值L.data[0] = 1;L.data[1] = 2;L.data[2] = 3;L.data[3] = 4;L.data[4] = 5;L.len = 5;//记录顺序表的当前长度ret = ListInsert(L,2,60);//在第二个元素位置插入60if (ret){printf("插入成功\n");PrintfList(L);}else{printf("插入失败\n");}return 0;
}
2.顺序表删除元素:
#include<stdio.h>
#define MaxSize 50 //定义线性表的长度
typedef int ElemType;//重定义线性表中每个元素的类型,便于修改
typedef struct{ElemType data[MaxSize];//顺序表int len;//记录顺序表的当前长度
}SqList;//顺序表的类型定义
bool ListDelete(SqList &L, int i, ElemType &e)
{ //&e是为了将删去的值赋给e//判断i的范围是否有效int j = 0;if (i<1 || i>L.len){return false;}e = L.data[i - 1]; //将被删除的元素赋值给efor (j=i; j<=L.len; j++){ //将第i个后的元素前移L.data[j - 1] = L.data[j];}L.len--; //长度减1return true;
}
void PrintfList(SqList L)
{int i =0;for (i = 0; i < L.len; i++){printf("%d",L.data[i]);}printf("\n");
}
int main()
{SqList L;bool ret;//布尔类型返回值L.data[0] = 1;L.data[1] = 2;L.data[2] = 3;L.data[3] = 4;L.data[4] = 5;L.len = 5;//记录顺序表的当前长度ElemType del;//存储删去的元素ret = ListDelete(L,1,del);//删除第一个元素if (ret){printf("删除成功\n");PrintfList(L);}else{printf("删除 失败\n");}return 0;
}
3.遍历查找(按值):
#include<stdio.h>
#define MaxSize 50 //定义线性表的长度
typedef int ElemType;//重定义线性表中每个元素的类型,便于修改
typedef struct{ElemType data[MaxSize];//顺序表int len;//记录顺序表的当前长度
}SqList;//顺序表的类型定义
int LocateElem(SqList L, ElemType e)
{int i = 0;for (i = 0; i < L.len; i++)//遍历查找{if (L.data[i] == e)return i + 1;}//数组下标为i的元素值等于e,返回其位序i+1return 0;//退出循环,说明查找失败
}
void PrintfList(SqList L)
{int i = 0;for (i = 0; i < L.len; i++){printf("%d ", L.data[i]);}printf("\n");
}
int main()
{SqList L;int ret;//布尔类型返回值L.data[0] = 1;L.data[1] = 2;L.data[2] = 3;L.data[3] = 60;L.data[4] = 5;L.len = 5;//记录顺序表的当前长度ret = LocateElem(L,60);if (ret){printf("查找成功\n");printf("位序是%d\n", ret);}else{printf("查找失败\n");}return 0;
}
动态版本:
#define MaxSize 50 //定义线性表的长度
typedef struct{ElemType* data;//顺序表的元素int len;//顺序表的当前长度
}SqList;//顺序表的类型定义
L.data=(ElemType*)malloc(sizeof(ElemType)*InitSize)
//malloc函数申请一片连续的存储空间,大小为sizeof(ElemType)*InitSize
//用完要用free函数释放原来的内存空间
②链表(链式存储)
用链式存储的方式实现线性表。
1.单链表
头指针:链表中第一个结点的存储位置,用来标识单链表。
头结点:在单链表第一个结点之前附加的一个结点,为了操作上的方便。
若链表有头结点,则头指针永远指向头结点,没有头结点则指向第一个结点,不论链表是否为空,头指针均不为空,头指针是链表的必须元素,他标识一个链表.
头结点是为了操作的方便而设立的,其数据域一般为空,或者存放链表的长度,
有头结点后,对在第一结点前插入和删除第一结点的操作就统一了,不需要频繁重置头指针,但头节点不是必须的。
优点:
插入和删除操作不需要移动元素,只需要修改指针。不需要大量的连续存储空间。
缺点:
单链表附加指针域。也存在浪费存储空间的缺点。查找操作时需要从表头开始遍历,依次查找,不能随机
①单链表定义:
typedef int ElemType;//重定义链表表中每个元素的类型,便于修改
typedef struct LNode//定义单链表结点类型
{ElemType data; //数据域struct LNode *next;//指针域,指向下一个结点。
}LNode, *LinkList;
解释:typedef重命名了两个数据类型,
分别是将struct LNode重命名为LNode,将struct LNode*重命名为LinkList
前者是个结构体,后者是个指向该结构体的指针
用LNode创建变量,就是创建一个结构体
用LinkList创建变量,就是指向这个结构体的指针
②头插法:
重点在灵活变化头结点的指针域,插进来一个,我就把头结点指针域原值赋给插进来结点的指针域,然后头结点的指针域改为新插进来结点的指针。
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 50 //定义线性表的长度
typedef int ElemType;//重定义链表表中每个元素的类型,便于修改
typedef struct LNode//定义单链表结点类型
{ElemType data; //数据域struct LNode* next;//指针域,指向下一个结点(结构体)。
}LNode, *LinkList;
LinkList list_head_insert(LinkList &L)
{L = (LinkList)malloc(sizeof(LNode));//用动态内存开辟初始化头指针,指向头结点L->next = NULL;ElemType x;//头结点不存数据,随机初始化即可scanf("%d", &x);LinkList s;//结构体指针,用来指向申请的新节点swhile (x!= 9999)//输入9999停止{s = (LinkList)malloc(sizeof(LNode));//为新节点申请空间s->data = x;//存数据s->next = L->next;L->next = s;//将插入的节点与头节点连接起来scanf("%d", &x);}return L;//链表建立完毕,返回头指针
}
void printf_list(LinkList L)
{L=L->next;while (L!= NULL){printf("%3d ", L->data);L=L->next;}printf("\n");
}
int main()
{LinkList L;//L是链表头指针,此时没初始化,还没指向头结点list_head_insert(L);printf_list(L);//链表打印return 0;
}
③尾插法:
r一直在充当中转站的角色。
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode{ElemType data;struct LNode *next;//指向下一个结点
}LNode, *LinkList;
//尾插法新建链表
LinkList list_tail_insert(LinkList &L)
{L = (LinkList)malloc(sizeof(LNode));//带头节点的链表L->next = NULL;ElemType x;scanf("%d", &x);LinkList s, r = L;//s是指向新结点,r始终指向链表尾部。while (x != 9999){s = (LNode*)malloc(sizeof(LNode));s->data = x;r->next = s;//让尾部结点指向新结点r = s;//r=s是确保r指向的是新的表尾结点scanf("%d", &x);}r->next = NULL;//尾结点的 next 指针赋值为 NULLreturn L;
}
//打印链表中每个结点的值
void print_list(LinkList L)
{L = L->next;while (L != NULL){printf("%3d ", L->data);//打印当前结点数据L = L->next;//指向下一个结点}printf("\n");
}
int main()
{LinkList L;//链表头,是结构体指针类型list_tail_insert(L);//输入数据可以为 3 4 5 6 7 9999print_list(L);//链表打印return 0;
}
具体操作
①按位查找(遍历):
单链表只能从前往后查找
L的位置是0
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef int ElemType;
typedef struct LNode
{ElemType data;struct LNode *next;//指向下一个结点
}LNode, *LinkList;
//尾插法新建链表
LinkList list_tail_insert(LinkList &L)
{L = (LinkList)malloc(sizeof(LNode));//带头节点的链表L->next = NULL;ElemType x;scanf("%d", &x);LinkList s, r = L;//s是指向新结点,r始终指向链表尾部。while (x != 9999){s = (LNode*)malloc(sizeof(LNode));s->data = x;r->next = s;//让尾部结点指向新结点r = s;//r 指向新的表尾结点scanf("%d", &x);}r->next = NULL;//尾结点的 next 指针赋值为 NULLreturn L;
}
//打印链表中每个结点的值
void print_list(LinkList L)
{L = L->next;while (L != NULL){printf("%3d ", L->data);//打印当前结点数据L = L->next;//指向下一个结点}printf("\n");
}
LinkList GetElem(LinkList L, int i)
{int j = 0; if (i < 0){return NULL;} for(j=0; L&&j<i;j++){L =L->next;}return L;//返回查找到的结点
}
int main()
{LinkList L, search;//链表头,是结构体指针类型list_tail_insert(L);print_list(L);//链表打印search = GetElem(L, 2);if (search != NULL){printf("按序号查找成功\n");printf("该序号的值为%d\n", search->data);return 0;}
}
②按值查找:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef int ElemType;
typedef struct LNode
{ElemType data;struct LNode *next;//指向下一个结点
}LNode, *LinkList;
//尾插法新建链表
LinkList list_tail_insert(LinkList &L)
{L = (LinkList)malloc(sizeof(LNode));//带头节点的链表L->next = NULL;ElemType x;scanf("%d", &x);LinkList s, r = L;//s是指向新结点,r始终指向链表尾部。while (x != 9999){s = (LNode*)malloc(sizeof(LNode));s->data = x;r->next = s;//让尾部结点指向新结点r = s;//r 指向新的表尾结点scanf("%d", &x);}r->next = NULL;//尾结点的 next 指针赋值为 NULLreturn L;
}
//打印链表中每个结点的值
void print_list(LinkList L)
{L = L->next;while (L != NULL){printf("%3d ", L->data);//打印当前结点数据L = L->next;//指向下一个结点}printf("\n");
}
LinkList LocateElem(LinkList L, ElemType e)
{while (L){if (L->data == e)//如果相等直接返回那个结点{return L;}L = L->next;}
}
int main()
{LinkList L, search;//链表头,是结构体指针类型list_tail_insert(L);print_list(L);//链表打印search = LocateElem(L, 6);//按值查询if (search != NULL){printf("按值查找成功\n");printf("%d\n", search->data);}
}
③插入元素:
在第i个节点插入某元素,那我就借助先按位查找到第i-1个节点,然后将i-1的指针域赋给要插入的指针域,将i-1节点的指针域改为新插入节点的位置
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef int ElemType;
typedef struct LNode
{ElemType data;struct LNode *next;//指向下一个结点
}LNode, *LinkList;
//尾插法新建链表
LinkList list_tail_insert(LinkList &L)
{L = (LinkList)malloc(sizeof(LNode));//带头节点的链表L->next = NULL;ElemType x;scanf("%d", &x);LinkList s, r = L;//s是指向新结点,r始终指向链表尾部。while (x != 9999){s = (LNode*)malloc(sizeof(LNode));s->data = x;r->next = s;//让尾部结点指向新结点r = s;//r 指向新的表尾结点scanf("%d", &x);}r->next = NULL;//尾结点的 next 指针赋值为 NULLreturn L;
}
//打印链表中每个结点的值
void print_list(LinkList L)
{L = L->next;while (L != NULL){printf("%3d ", L->data);//打印当前结点数据L = L->next;//指向下一个结点}printf("\n");
}
//按位查找
LinkList GetElem(LinkList L, int i)
{int j = 0;if (i < 0){return NULL;}for(j=0; L&&j<i;j++){L =L->next;}return L;//返回查找到的结点
}
//插入操作
bool ListFrontInsert(LinkList L, int i, ElemType e)
{LinkList p = GetElem(L, i - 1);if (NULL == p){return false;}LinkList s = (LNode*)malloc(sizeof(LNode));//为新插入的结点申请空间s->data = e;s->next = p->next;p->next = s;return true;
}
int main()
{LinkList L, search;//链表头,是结构体指针类型list_tail_insert(L);print_list(L);//链表打印ListFrontInsert(L, 2, 99);//新结点插入第2个位置,值为99print_list(L);
}
④删除操作
删除第i个节点,借助按位查找找到第i-1个,然后将该节点的指针域赋给中间变量,便于后续释放,然后将第i个节点的指针域赋给i-1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef int ElemType;
typedef struct LNode
{ElemType data;struct LNode *next;//指向下一个结点
}LNode, *LinkList;
//尾插法新建链表
LinkList list_tail_insert(LinkList &L)
{L = (LinkList)malloc(sizeof(LNode));//带头节点的链表L->next = NULL;ElemType x;scanf("%d", &x);LinkList s, r = L;//s是指向新结点,r始终指向链表尾部。while (x != 9999){s = (LNode*)malloc(sizeof(LNode));s->data = x;r->next = s;//让尾部结点指向新结点r = s;//r 指向新的表尾结点scanf("%d", &x);}r->next = NULL;//尾结点的 next 指针赋值为 NULLreturn L;
}
//打印链表中每个结点的值
void print_list(LinkList L)
{L = L->next;while (L != NULL){printf("%3d ", L->data);//打印当前结点数据L = L->next;//指向下一个结点}printf("\n");
}
//按位查找
LinkList GetElem(LinkList L, int i)
{int j = 0;if (i < 0){return NULL;}for(j=0; L&&j<i;j++){L =L->next;}return L;//返回查找到的结点
}
//删除操作
bool ListFrontInsert(LinkList L, int i, ElemType e)
{LinkList p = GetElem(L, i - 1);if (NULL == p){return false;}LinkList q;//用来存储删除的节点,便于释放动态空间q=p->next;p->next=q->next;//断链free(q)//释放对应节点的空间return true;
}
int main()
{LinkList L, search;//链表头,是结构体指针类型list_tail_insert(L);print_list(L);//链表打印ListDelete(L,4);print_list(L);//链表打印
}
相关文章:
数据结构 | 线性表
🔥Go for it!🔥 📝个人主页:按键难防 📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 📖系列专栏:数据结构与算法 ὒ…...
Deepwalk深度游走算法
主要思想 Deepwalk是一种将随机游走和word2vec两种算法相结合的图结构数据的挖掘算法。该算法可以学习网络的隐藏信息,能够将图中的节点表示为一个包含潜在信息的向量, Deepwalk算法 该算法主要分为随机游走和生成表示向量两个部分,首先…...
微服务项目【服务调用分布式session共享】
nginx动静分离 第1步:通过SwitchHosts新增二级域名:images.zmall.com 第2步:将本次项目的所有静态资源js/css/images复制到nginx中的html目录下 第3步:在nginx的核心配置文件nginx.conf中新增二级域名images.zmall.com访问映射…...
神经网络的万能逼近定理
这是我见过的讨论神经网络万有逼近问题的最好的文章。在文章中,给出了最清晰,简洁的构造性证明。揭示了它的本质。 三十年前,我们接触到神经网络的万有逼近问题。发表了几篇文章。这些文章把神经网络能力的来历、优点、缺点,都已…...
【信息系统项目管理师】项目管理过程的三万字大论文
【信息系统项目管理师】项目管理过程的三万字大论文 【信息系统项目管理师】项目管理过程的三万字大论文 【信息系统项目管理师】项目管理过程的三万字大论文1.制定项目章程2.识别干系人3.制定范围管理计划4.制定进度管理计划5.制定成本管理计划6.制定质量管理计划7.编制人力资…...
【C++】C++11 ~ 包装器解析
🌈欢迎来到C专栏~~包装器解析 (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort目前状态:大三非科班啃C中🌍博客主页:张小姐的猫~江湖背景快上车🚘,握好方向盘跟我有一起打天下嘞!送给自己的一句鸡汤&a…...
SpringBoot整合(三)SpringBoot发送邮件
使用SpringBoot发送邮件 邮件发送其实是一个非常常见的需求,用户注册,找回密码等地方,都会用到,Spring Boot 中对于邮件发送,提供了相关的自动化配置类,使得邮件发送变得非常容易。 1、前置工作 目前国内…...
【docker知识】联合文件系统(unionFS)原理
一、说明 Docker CLI 操作起来比较简单——您只需掌握Create、Run、InspPull和Push容器和图像,但是谁想过Docker 背后的内部机制是如何工作的?在这个简单的表象背后隐藏着许多很酷的技术, UnionFS(统一文件系统)就是其…...
使用Lame库实现wav、pcm转mp3
文章目录 前言 一、Lame库是什么? 二、使用步骤 0.创建native项目 1.下载Lame库 2.pcm转MP3 3.wav转MP3 4、native方法如下 三、注意 总结 前言 因为使用android录音后生成的文件是wav或者pcm格式,项目要求最后的文件需要是mp3格式,于…...
c++11 标准模板(STL)(std::multimap)(三)
定义于头文件 <map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class multimap;(1)namespace pmr { template <class Key, class T…...
【报复性赚钱】2023年5大风口行业
今天就来和大家分享一下,在时代的洪流下,普通人如何顺应大势抓住机遇! 实现人在风口上,猪都会飞起来。 根据对市场的观察及各平台数据分析结果,结合国家政策和经济专家的分析,小编预测了2023年将会迎来大…...
单目相机、双目相机和RGB-D相机学习笔记(一些视频和博文网址)
目录1. 单目相机1.1 摄像头原理1.2 单目相机的标定2 双目相机2.1 双目相机定位原理2.2 双目相机的缺陷3 RGB-D相机3.1 深度相机结构光原理3.2 RGB-D相机的应用1. 单目相机 1.1 摄像头原理 视频网址:【全网最详细】摄像头原理分析(约25分钟课程…...
word和wps添加mathtype选项卡
word或wps添加mathtype选项卡 前提 安装好word或wps安装好mathtype 步骤 确认word或wps具体安装位置确认word或wps位数为32位还是64位复制mathtype中的MathPage.wll文件和MathType Commands 2016.dotm文件到STARTUP位置添加受信任位置添加加载项 安装位置 通过开始页面&a…...
获取成员userID
文章目录一、简介二、获取token1、获取秘钥2、获取Token三、获取部门数据1、获取部门列表2、获取子部门ID列表3、获取单个部门详情四、获取成员信息1、读取成员2、获取部门成员3、获取部门成员详情一、简介 同步数据到企微: 企业如果需要从自有的系统同步通讯录到…...
DOM编程-显示网页时钟
<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>显示网页时钟</title> </head> <body bgcolor"antiquewhite"> <script type"text/javascrip…...
浅谈保护数据的加密策略
加密是一种将信息从可读格式转换为混乱字符串的技术。这样做可以防止数据传输中的机密数据泄露。文档、文件、消息和所有其他形式的网络通信都可以加密。加密策略和身份验证服务的结合,还能保障企业机密信息只对授权用户开启访问权限。常见的数据加密包括以下两种&a…...
Java中String,StringBuffer和StringBuilder
String类 我们在定义string变量时 常常写 String str "hello word"; 这样的代码,看起来和int a 0; 是一样的声明方式, 但其实两者是不同的, int 是java中定义的基本数据类型, 而String是一个类,是一个特殊的类,可以像基本数据类型一样直接赋…...
华为认证常见技术问答整理:什么是Datacom认证?
一、关于Datacom认证Q:什么是Datacom认证?A:Datacom,即DatacomCommunication的缩写,中文为“数据通信”,属于ICT技术架构认证类别(华为认证包含ICT技术架构认证、平台与服务认证和行业ICT认证三…...
Read book Netty in action (Chapter II) (Netty Introduction)
前言 支持15W的并发客户端,我们应该视为理所当然的事情,很多公司甚至能够支撑更多,例如我们熟知的 BAT,当几年前双十一的夜晚,并发量是不可估计的。还有春节的时候购票的时候的并发。作为一个优秀的开发人员ÿ…...
python--route
routes是用python重新实现的Rails routes系统,用于将url映射到应用程序的actions ,并反过来生成url 它也是在openstack实现restful通信的方式,它被用来做将 URL 映射为 App 的 action,以及为 App的action 产生 URL 两个重要的方法…...
java面试中被问到项目中的难点,怎么回答
java面试中被问到项目中的难点,怎么回答回答步骤举例说明回答步骤 回答这个问题的方法取决于你的项目的类型和难度。 但是,一般来说,你可以遵循以下步骤来回答这个问题: 描述你的项目:首先简要描述你的项目的类型和目…...
【速通版】吴恩达机器学习笔记Part1
准备速通一下吴恩达的机器学习 很快做个笔记5.2.3 监督学习 part 2_哔哩哔哩_bilibili 目录 1.概述(P1-P3) 2.supervised learning:(P4,P5) regression: classification 3.unsupervised learning (P6- 1.聚类算…...
面试(九)小米C++开发一面 21.11.02
1、局部变量与全局变量的区别?可以同名嘛? 首先是作用域: 局部变量只在变量声明的代码块范围内生效 全局变量在其声明后的所有位置都能访问到 在局部变量与全局变量同名的情况下,全局变量会被屏蔽掉,只会使用局部变量的内容 2、extern 当在a.c中想要使用b.c中的函数fu…...
儿童书写台灯哪个牌子比较好?2023儿童护眼台灯分享
现在儿童的近视率高达52.7%,有科技水平的提高和电子产品的普及,近视率逐年攀升,出现低龄化现象,调查结果显示,其中6岁儿童达到14.3%,小学生为35.6%。初中生71.1%,高中生高达80.5%,可…...
市场调研计划书如何写?
想要做好一个产品,市场调研是必不可少的一步,也是第一步,那么如何进行市场调研呢?以下是我整理的一份市场调研计划书,希望能够帮助到大家!!! 一、文档版本控制 主要记录文档的版本…...
python网络爬虫—快速入门(理论+实战)(七)
系列文章目录 (1)python网络爬虫—快速入门(理论实战)(一) (2)python网络爬虫—快速入门(理论实战)(二) (3) p…...
机器学习笔记——Chapter 1 – The Machine Learning landscape
ML学习笔记 Chapter 1 – The Machine Learning landscape 1.如何定义机器学习? Answer:机器学习是一门通过编程让计算机从数据中进行学习的科学(和艺术)。 2.机器学习在哪些问题上表现突出,你能给出四种类型吗&am…...
skimage.feature--corner_harris、hog、local_binary_pattern说明
skimage.feature说明–corner_harris、hog、local_binary_pattern 文章目录skimage.feature说明--corner_harris、hog、local_binary_pattern1. 前言2. corner_harris2.1 介绍2.2 参数及返回3. hog3.1 介绍3.2 参数及返回4. local_binary_pattern4.1 介绍4.2 参数及返回5. 总结…...
致敬白衣天使,学习Python读取
名字:阿玥的小东东 学习:Python、c 主页:阿玥的小东东 故事设定:现在学校要求对所有同学进行核酸采集,每位同学先在宿舍内等候防护人员(以下简称“大白”)叫号,叫到自己时去停车场排…...
JVM - 认识JVM规范
目录 重识JVM JVM规范作用及其核心 JVM 整体组成 理解ClassFile结构 ASM开发 重识JVM JVM概述JVM: Java Virtual Machine,也就是Java虚拟机所谓虚拟机是指: 通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统…...
门户网站的发展趋势/百度一下官网手机版
两篇精彩的文章:rocketmq通过netty获取到消息请求后,直接掉处理模块,比如:SendMessageProcessor这个处理类主要负责处理客户端发送消息的请求。这个类实现了com.alibaba.rocketmq.remoting.netty.NettyRequestProcessor接口。这个…...
关于网站建设相关文章/为企业策划一次网络营销活动
.matchmedia2011年的文章已于2018年更新。 自从CSS取代表格以来, 自适应设计是最令人兴奋的Web布局概念之一。 基础技术使用媒体查询来确定查看设备的类型,宽度,高度,方向,分辨率,长宽比和颜色深度&#x…...
保险网站模板/互联网推广项目
关键字 const 声明常量。修饰指针,分为指向常量的指针(pointer to const)和自身是常量的指针(常量指针,const pointer);修饰引用,指向常量的引用(reference to const&a…...
杭州建设网站哪家好/游戏推广公司怎么接游戏的
据国外媒体报道,苹果在昨日的全球开发者会议上未发布任何硬件产品。此举让部分媒体和专栏作家感到不安,并由此展开讨论。苹果究竟是一家硬件公司,还是一家软件公司?《福布斯》周二发表评论文指出——苹果事实上是一家生态系统公司。 以下为《…...
动态网站用什么语言做的/一站式媒体发布平台
https://zhuanlan.zhihu.com/p/352503879 今天复习mysql理论知识,在看常用数据类型的时候发现float和decimal类型都是表示小数,就展开搜索学习了一下区别,分享给大家: 表示小数的一共有三种类型:float是单精度…...
响应式网站是/简述seo的基本步骤
计算机与plc连接方式PLC与计算机的连接有以下3种。1、使用计算机的RS232C端口与PLC的编程口直接相连。2、通过网络、与其他站点的PLC进行通信。3、通过调制解调器,与远程的PLC进行通信。一、使用计算机的RS232C端口与PLC的编程口直接相连的情况①设置PLC的通信条件。…...