数据结构---线性表

news2024/11/20 4:48:00

刘佳瑜*,王越 *, 黄扬* , 张钊*

(淮北师范大学计算机科学与技术学院,安徽 淮北)

*These authors contributed to the work equllly and should be regarded as co-first authors.

🌞欢迎来到数据结构的世界 
🌈博客主页:卿云阁

💌欢迎关注🎉点赞👍收藏⭐️留言📝

🌟本文由卿云阁原创!

🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!


目录

🍈 线性表的定义

 🍉顺序表

存储结构

定义和初始化

插入

删除

查找

🍊单链表

建立单链表

查找运算

插入运算

删除运算

​编辑

求表长运算

🍋双向链表 

🥥循环链表 

🍇静态链表 


🍈 线性表的定义


 🍉顺序表

存储结构

定义和初始化

静态分配

#define MAXSIZE 10
typedef int DateType; 
typedef struct
{
  DateType data[MAXSIZE];
  int length;
}SqList;
void InitList(SqList &L)
{
  L.length=0;
}
int main() 
{
  SqList L;
  InitList(L);
  return 0;
}

 动态分配


#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 5       //MAXSIZE是根据实际问题定义的足够大的整数常量
typedef int DataType;
typedef struct{ 
   DataType  *data;//定义了一个指针变量存放地址
   int  length; 
 }SqList;       //定义顺序表类型
 
int main() {
 SqList L;
L.data=(DataType*)malloc(sizeof(DataType)*MAXSIZE);//在C++中也可以使用new,和delete
free(L.data);  //释放空间
L.data=NULL;
  return 0;
}

增加数组空间的长度 

#include<stdio.h>
#include<stdlib.h>
#define INITSIZE 10       
typedef int DataType;
typedef struct{ 
   DataType  *data;
   int  length; 
   int maxsize;
 }SqList;       //定义顺序表类型
void InitSqList(SqList &L,int initsize)
{   printf("%d\n",initsize);
    L.data=(DataType *)malloc(sizeof(DataType )*initsize);
    L.length=0;
    L.maxsize=initsize;
}
//增加动态数组的长度
void IncreaseSize(SqList &L,int len)
{
  int *p=L.data;
  int i;
  L.data=(DataType *)malloc(sizeof(DataType )*(INITSIZE+len));
  for(i=0;i<L.length;i++)
      L.data[i]=p[i];
  L.maxsize+=len;
  free(p);
}
  
int main() {
  SqList L;
  InitSqList(L,INITSIZE);
  IncreaseSize(L,5);
  return 0;
}

插入

#include<stdio.h>
#define MAXSIZE 5       //MAXSIZE是根据实际问题定义的足够大的整数常量
typedef int DataType;
typedef struct{ 
   DataType  data[MAXSIZE];
   int  length; 
 }SqList;       //定义顺序表类型
void InitSqList(SqList &L)
{
    L.length=3;
    L.data[0]=0;
    L.data[1]=1;
    L.data[2]=3;
 
}
void InsertSqList(SqList &L,int  i,DataType  x)
{  int j; 
    if(L.length==MAXSIZE)
    {   printf("\n顺序表是满的,无法插入元素!");
        exit(1);
    } 
    if(i<1||i>L.length+1)
    {  printf("\n指定的插入位置不存在!");
        exit(1);
    } 
    for(j=L.length-1;j>=i-1;j--) 
        L.data[j+1]=L.data[j]; 
    L.data[i-1]=x;
    L.length++; 
}
int main() {
  SqList L;
  InitSqList(L);
  int i=3;
  int x=2;
  InsertSqList(&.L,i,x);
  return 0;
}

删除

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 5       //MAXSIZE是根据实际问题定义的足够大的整数常量
typedef int DataType;
typedef struct{ 
   DataType  data[MAXSIZE];
   int  length; 
 }SqList;       //定义顺序表类型
void InitSqList(SqList &L)
{
    L.length=4;
    L.data[0]=0;
    L.data[1]=1;
    L.data[2]=4;
    L.data[3]=2;
}
void DeleteSqList(SqList &L,int  i)
{  int j;
  if(L.length==0) 
    {  printf("\n顺序表是空的,无法删除元素!");
        exit(1);
    }
    if(i<1||i>L.length)
    {  printf("\n指定的删除位置不存在!");
        exit(1);
    }
    for(j= i;j< L.length;j++) 
        L.data[j-1]=L.data[j]; 
    L.length--; 
}

int main() {
  SqList L;
  InitSqList(L);
  int x=3;
  DeleteSqList(L,x);
  return 0;
}

查找

 

按位查找

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 5       //MAXSIZE是根据实际问题定义的足够大的整数常量
typedef int DataType;
typedef struct{ 
   DataType  data[MAXSIZE];
   int  length; 
 }SqList;       //定义顺序表类型
void InitSqList(SqList &L)
{
    L.length=4;
    L.data[0]=0;
    L.data[1]=1;
    L.data[2]=4;
    L.data[3]=2;
}
DataType GetElem(SqList L,int i)
{
  return L.data[i-1];
}

int main() {
  SqList L;
  int a;//接受查找到的元素
  InitSqList(L);
  a=GetElem(L,3);
  printf("this:%d",a);
  return 0;
}

按值查找

#include<stdio.h>
#define MAXSIZE 5       //MAXSIZE是根据实际问题定义的足够大的整数常量
typedef int DataType;
typedef struct{ 
   DataType  data[MAXSIZE];
   int  length; 
 }SqList;       //定义顺序表类型
void InitSqList(SqList L)
{
    L.length=4;
    L.data[0]=0;
    L.data[1]=1;
    L.data[2]=4;
    L.data[3]=2;
}
int  LocationSqList(SqList L, DataType x)
{ int i;
  for (i=0; i<L.length; i++)
      if (L.data[i] == x)        //查找成功,返回元素位置i 
       return i+1;
     if (i == L.length)          //查找失败,返回-1 
       return -1;
}

int main() {
  SqList L;
  InitSqList(L);
  LocationSqList(L, 4);
  return 0;
}

🍊单链表

节点的结构

 

不带头结点的单链表

#include<stdio.h>
#define MAXSIZE 5  
typedef int DataType;
typedef struct Node
{ 
    DataType  data;
    struct Node *next;
}LNode , *LinkList;
bool InitList(LinkList &L)
{
  L=NULL;
  return true;
}
bool Empty(LinkList L)
{
  return (L==NULL);
}
int main() 
{
  LinkList L;
  InitList(L);
  return 0;
}

带头结点的单链表

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 5  
typedef int DataType;
typedef struct Node
{ 
    DataType  data;
    struct Node *next;
}LNode , *LinkList;
bool InitList(LinkList &L)
{
  L=(LNode *)malloc(sizeof(LNode));
  if (L==NULL)
      return false;
  L->next=NULL;
  return true;
}
bool Empty(LinkList L)
{
  if (L->next==NULL)
      return true;
  else
      return false;
}
int main() 
{
  LinkList L;
  InitList(L);
  return 0;
}

建立单链表

头插法

#define flag -1
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 5  
typedef int DataType;
typedef struct Node
{ 
    DataType  data;
    struct Node *next;
}LNode , *LinkList;
bool InitList(LinkList &L)
{
  L=(LNode *)malloc(sizeof(LNode));
  if (L==NULL)
      return false;
  L->next=NULL;
  return true;
}
bool Empty(LinkList L)
{
  if (L->next==NULL)
      return true;
  else
      return false;
}
int CreatLinkList(LinkList &L) 
{
	LNode *s;
	DataType x;
	int count=0;//记录输入的节点的个数 
	printf("请输入第一个节点的值:\n");
	scanf("%d",&x);
	while(x!=flag)
	{
		s=(LinkList)malloc(sizeof(LNode));
		s->data=x;
		s->next=L->next;
		L->next=s;
		count++;
		printf("请输入下一个节点的值:\n");
		scanf("%d",&x);
	}
	return count; 
}
void printLinkList(LinkList &L,int count)
{
	int i;
	LNode *s=L->next; 
	for(i=0;i<count;i++)
	{
		printf("第%d个节点的值:%d\n",(i+1),(s->data));
		s=s->next;
	}
}
int main() 
{
  printf("使用头插法建立单链表\n");
  int count;
  LinkList L;
  InitList(L);
  count=CreatLinkList(L);
  printLinkList(L,count);
  return 0;
}

尾插法

#define flag -1
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 5  
typedef int DataType;
typedef struct Node
{ 
    DataType  data;
    struct Node *next;
}LNode , *LinkList;
bool InitList(LinkList &L)
{
  L=(LNode *)malloc(sizeof(LNode));
  if (L==NULL)
      return false;
  L->next=NULL;
  return true;
}
bool Empty(LinkList L)
{
  if (L->next==NULL)
      return true;
  else
      return false;
}
int CreatLinkList(LinkList &L) 
{
	LNode *s,*r;
	DataType x;
	int count=0;//记录输入的节点的个数 
	r=L;
	printf("请输入第一个节点的值:\n");
	scanf("%d",&x);
	while(x!=flag)
	{
		s=(LinkList)malloc(sizeof(LNode));
		s->data=x;
		r->next=s;
		r=s;
		count++;
		printf("请输入下一个节点的值:\n");
		scanf("%d",&x);
	}
	r->next=NULL;
	return count; 
}
void printLinkList(LinkList &L,int count)
{
	int i;
	LNode *s=L->next; 
	for(i=0;i<count;i++)
	{
		printf("第%d个节点的值:%d\n",(i+1),(s->data));
		s=s->next;
	}
}
int main() 
{
  printf("使用尾插法建立单链表\n");
  int count;
  LinkList L;
  InitList(L);
  count=CreatLinkList(L);
  printLinkList(L,count);
  return 0;
}

查找运算

按位查找&按值查找

#define flag -1
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 5  
typedef int DataType;
typedef struct Node
{ 
    DataType  data;
    struct Node *next;
}LNode , *LinkList;
bool InitList(LinkList &L)
{
  L=(LNode *)malloc(sizeof(LNode));
  if (L==NULL)
      return false;
  L->next=NULL;
  return true;
}
bool Empty(LinkList L)
{
  if (L->next==NULL)
      return true;
  else
      return false;
}
int CreatLinkList(LinkList &L) 
{
	LNode *s,*r;
	DataType x;
	int count=0;//记录输入的节点的个数 
	r=L;
	printf("请输入第一个节点的值:\n");
	scanf("%d",&x);
	while(x!=flag)
	{
		s=(LinkList)malloc(sizeof(LNode));
		s->data=x;
		r->next=s;
		r=s;
		count++;
		printf("请输入下一个节点的值:\n");
		scanf("%d",&x);
	}
	r->next=NULL;
	return count; 
}
void printLinkList(LinkList &L,int count)
{
	int i;
	LNode *s=L->next; 
	for(i=0;i<count;i++)
	{
		printf("第%d个节点的值:%d\n",(i+1),(s->data));
		s=s->next;
	}
}
LNode *GetLinkList(LinkList L,int i)
{
	LinkList p=L;
	int j=0;//表示当前查找的位置 
	while(p->next!=NULL&&j<i)
	{
		p=p->next;
		j++;
	}
	return p;
 } 
 LNode *LocationLinkList(LinkList L,DataType x) 
{
	LinkList p=L->next;
	while(p->next!=NULL&&p->data!=x)
	{
		p=p->next;
	}
	return p;
 } 
int main() 
{
  printf("使用尾插法建立单链表\n");
  int count;
  LNode *p1,*p2;//接受查找的结果 
  LinkList L;
  InitList(L);
  count=CreatLinkList(L);
  printf("建立单链表如下\n");
  printLinkList(L,count);
  printf("查找第3个元素的值:\n");
  p1=GetLinkList(L,3);
  printf("查找第3个元素的值:%d\n",p1->data);
  printf("4在链表中的地址:\n");
  p2=LocationLinkList(L,4); 
  printf("4在链表中的地址%d\n",p2 );
  return 0;
}

插入运算

#define flag -1
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 5  
typedef int DataType;
typedef struct Node
{ 
    DataType  data;
    struct Node *next;
}LNode , *LinkList;
bool InitList(LinkList &L)
{
  L=(LNode *)malloc(sizeof(LNode));
  if (L==NULL)
      return false;
  L->next=NULL;
  return true;
}
bool Empty(LinkList L)
{
  if (L->next==NULL)
      return true;
  else
      return false;
}
int CreatLinkList(LinkList &L) 
{
	LNode *s,*r;
	DataType x;
	int count=0;//记录输入的节点的个数 
	r=L;
	printf("请输入第一个节点的值:\n");
	scanf("%d",&x);
	while(x!=flag)
	{
		s=(LinkList)malloc(sizeof(LNode));
		s->data=x;
		r->next=s;
		r=s;
		count++;
		printf("请输入下一个节点的值:\n");
		scanf("%d",&x);
	}
	r->next=NULL;
	return count; 
}
void printLinkList(LinkList &L,int count)
{
	int i;
	LNode *s=L->next; 
	for(i=0;i<count;i++)
	{
		printf("第%d个节点的值:%d\n",(i+1),(s->data));
		s=s->next;
	}
}
LNode *GetLinkList(LinkList L,int i)
{
	LinkList p=L;
	int j=0;//表示当前查找的位置 
	while(p!=NULL&&j<i)
	{
		p=p->next;
		j++;
	}
	return p;
 } 
 LNode *LocationLinkList(LinkList L,DataType x) 
{
	LinkList p=L->next;
	while(p->next!=NULL&&p->data!=x)
	{
		p=p->next;
	}
	return p;
 } 
 void InsertLinkList(LinkList L,int i,DataType x)
 {
 	LNode *p,*s;
 	p=GetLinkList(L,i-1);
 	if (p==NULL)
 	{
 		printf("插入的位置不合法:\n");
 		exit(1);
	 }
	else
	{
	s=(LNode *) malloc(sizeof(LNode));
	s->data=x;
 	s->next=p->next;
 	p->next=s;	
	}

 }
int main() 
{
  printf("使用尾插法建立单链表\n");
  int count;
  LNode *p1,*p2;//接受查找的结果 
  LinkList L;
  InitList(L);
  count=CreatLinkList(L);
  printf("建立单链表如下\n");
  printLinkList(L,count);
  InsertLinkList(L,3,2);
  printf("插入2后的单链表如下:\n");
  printLinkList(L,count+1);
  return 0;
}

删除运算

#define flag -1
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 5  
typedef int DataType;
typedef struct Node
{ 
    DataType  data;
    struct Node *next;
}LNode , *LinkList;
bool InitList(LinkList &L)
{
  L=(LNode *)malloc(sizeof(LNode));
  if (L==NULL)
      return false;
  L->next=NULL;
  return true;
}
bool Empty(LinkList L)
{
  if (L->next==NULL)
      return true;
  else
      return false;
}
int CreatLinkList(LinkList &L) 
{
	LNode *s,*r;
	DataType x;
	int count=0;//记录输入的节点的个数 
	r=L;
	printf("请输入第一个节点的值:\n");
	scanf("%d",&x);
	while(x!=flag)
	{
		s=(LinkList)malloc(sizeof(LNode));
		s->data=x;
		r->next=s;
		r=s;
		count++;
		printf("请输入下一个节点的值:\n");
		scanf("%d",&x);
	}
	r->next=NULL;
	return count; 
}
void printLinkList(LinkList &L,int count)
{
	int i;
	LNode *s=L->next; 
	for(i=0;i<count;i++)
	{
		printf("第%d个节点的值:%d\n",(i+1),(s->data));
		s=s->next;
	}
}
LNode *GetLinkList(LinkList L,int i)
{
	LinkList p=L;
	int j=0;//表示当前查找的位置 
	while(p!=NULL&&j<i)
	{
		p=p->next;
		j++;
	}
	return p;
 } 
 LNode *LocationLinkList(LinkList L,DataType x) 
{
	LinkList p=L->next;
	while(p!=NULL&&p->data!=x)
	{
		p=p->next;
	}
	return p;
 } 
 void InsertLinkList(LinkList L,int i,DataType x)
 {
 	LNode *p,*s;
 	p=GetLinkList(L,i-1);
 	if (p==NULL)
 	{
 		printf("插入的位置不合法:\n");
 		exit(1);
	 }
	else
	{
	s=(LNode *) malloc(sizeof(LNode));
	s->data=x;
 	s->next=p->next;
 	p->next=s;	
	}

 }
 void DeleteLinkList(LinkList L,int i)
 {
 	LNode *p,*q;
 	p=GetLinkList(L,i-1);
 	if (p==NULL)
 	{
 		printf("删除的位置不合法:\n");
 		exit(1);
	 }
	else
	{
	  if(p->next==NULL) 
	  	{
 		printf("删除的位置不合法:\n");
 		exit(1);
	   }
	   else
	   {
	   	q=p->next;
	   	p->next=p->next->next;
	   	free(q);
	   }
	}
 }
int main() 
{
  printf("使用尾插法建立单链表\n");
  int count;
  LNode *p1,*p2;//接受查找的结果 
  LinkList L;
  InitList(L);
  count=CreatLinkList(L);
  printf("建立单链表如下\n");
  printLinkList(L,count);
  InsertLinkList(L,3,2);
  printf("删除第3个节点的单链表如下:\n");
  DeleteLinkList(L,3);
  printLinkList(L,count-1);
  return 0;
}

求表长运算

#define flag -1
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 5  
typedef int DataType;
typedef struct Node
{ 
    DataType  data;
    struct Node *next;
}LNode , *LinkList;
bool InitList(LinkList &L)
{
  L=(LNode *)malloc(sizeof(LNode));
  if (L==NULL)
      return false;
  L->next=NULL;
  return true;
}
bool Empty(LinkList L)
{
  if (L->next==NULL)
      return true;
  else
      return false;
}
int CreatLinkList(LinkList &L) 
{
	LNode *s,*r;
	DataType x;
	int count=0;//记录输入的节点的个数 
	r=L;
	printf("请输入第一个节点的值:\n");
	scanf("%d",&x);
	while(x!=flag)
	{
		s=(LinkList)malloc(sizeof(LNode));
		s->data=x;
		r->next=s;
		r=s;
		count++;
		printf("请输入下一个节点的值:\n");
		scanf("%d",&x);
	}
	r->next=NULL;
	return count; 
}
void printLinkList(LinkList &L,int count)
{
	int i;
	LNode *s=L->next; 
	for(i=0;i<count;i++)
	{
		printf("第%d个节点的值:%d\n",(i+1),(s->data));
		s=s->next;
	}
}
LNode *GetLinkList(LinkList L,int i)
{
	LinkList p=L;
	int j=0;//表示当前查找的位置 
	while(p!=NULL&&j<i)
	{
		p=p->next;
		j++;
	}
	return p;
 } 
 LNode *LocationLinkList(LinkList L,DataType x) 
{
	LinkList p=L->next;
	while(p!=NULL&&p->data!=x)
	{
		p=p->next;
	}
	return p;
 } 
int LengthLinkList(LinkList L)
{
	int len=0;
	LNode *p=L;
	while(p->next)
	{
		len++;
		p=p->next;
	}
   return len;
}
int main() 
{
  printf("使用尾插法建立单链表\n");
  int count;
  int length;
  LNode *p1,*p2;//接受查找的结果 
  LinkList L;
  InitList(L);
  count=CreatLinkList(L);
  printf("建立单链表如下\n");
  printLinkList(L,count);
  length=LengthLinkList(L);
  printf("单链表的长度是%d\n",length);
  return 0;
}


🍋双向链表 

 


 🥥循环链表 

 


   🍇静态链表 

Institutional Review Board Statement: Not applicable.

Informed Consent Statement: Not applicable.

Data Availability Statement: Not applicable.

Author Contributions:All authors participated in the assisting performance study and approved the paper.

Conflicts of Interest: The authors declare no conflict of interest

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

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

相关文章

回溯法--最大团问题

问题描述什么是最大团&#xff1f;最大团的定义&#xff1f;完全图&#xff1a;如果无向图中的任何一对顶点之间都有一条边&#xff0c;这种无向图称为完全图。完全子图&#xff1a;给定无向图G(V,E)。如果U⊆V&#xff0c;且对任意u&#xff0c;v⊆U 有(u&#xff0c;v) ⊆ E&…

ZigBee 3.0实战教程-Silicon Labs EFR32+EmberZnet-5-02:串口发送数据-hello world

【源码、文档、软件、硬件、技术交流、技术支持&#xff0c;入口见文末】 【所有相关IDE、SDK和例程源码均可从群文件免费获取&#xff0c;免安装&#xff0c;解压即用】 持续更新中&#xff0c;欢迎关注&#xff01; 前面《ZigBee 3.0实战教程-Silicon Labs EFR32EmberZnet-5…

90 后学霸博士 8 年进击战:用机器学习为化工研究叠 BUFF

本文首发自微信公众号&#xff1a;HyperAI超神经 内容一览&#xff1a;ScienceAI 作为近两年的技术热点&#xff0c;引起了业界广泛关注和讨论。本文将围绕 ScienceAdvances 的一篇论文&#xff0c;介绍如何利用机器学习&#xff0c;对燃煤电厂的胺排放量进行预测。 关键词&…

初始化一个GCP项目并用gcloud访问操作

1 简介 谷歌云GCP&#xff08;Google Cloud Platform&#xff09;是由Google提供的云平台&#xff0c;还是为用户提供了许多免费的产品&#xff0c;还是可以尝试一下的。对于学习或者小项目&#xff0c;都可以使用。 2 创建一个新项目 要使用GCP&#xff0c;我们需要创建一个…

【日常业务开发】常用JSON库API

【日常业务开发】常用JSON库APIGsonJava 对象转 Json字符串(序列化)Json字符串转Java 对象(反序列化)FastJsonJava 对象转 Json字符串(序列化)Json字符串转Java 对象(反序列化)JacksonJava 对象转 Json字符串(序列化)Json字符串转Java 对象(反序列化)Json 字符串内容反序列化为…

计算机网络各层设备故障及可行的解决方案

计算机网络分层 我们采用某五层模型进行研究 根据有关资料的统计&#xff0c;网络发生故障具体分布为&#xff1a; 应用层占3%&#xff1b; 表示层占7%&#xff1b; 会话层占8%&#xff1b; 传输层占10%&#xff1b; 网络层占12%&#xff1b; 数据链路层占25%&#xff…

大数据开发-Linux操作

目录1.1 touch:创建空文件1.2 mv :move 剪切粘贴--重命名和移动功能1.3 cat命名&#xff1a;查看文件内容1.4 cp &#xff1a;copy 复制粘贴1.5 ps、kill、ifconfig、clear1.6 回顾&#xff1a;1.1 touch:创建空文件 touch a.txt b.txt — 创建空文件a.txt与b.txt touch /root…

数据结构与算法(二)——递归算法

目录 前言 递归算法 1、什么是递归算法 2、核心理念 3、代码演示 4、问题探讨&#xff1a;只递不归会怎样&#xff1f; 5、小结 递归实例&#xff1a;汉诺塔问题 1、故事引入 2、移动盘子的逻辑 3、N个盘子的移动分析 4、代码实现N个盘子的移动 5、汉诺塔移动次数计…

文本到图像模型,如何快速生成高质量图片? #Google Muse AI

AIGC 的存在&#xff0c;大大提高了创作者的生产效率&#xff0c;目前&#xff0c;市面上也出现了许多快速生成图像的 AI 图像模型。近日&#xff0c;谷歌的 Muse AI 系统亮相&#xff0c;使用 AI 生成图片又多了一个选择工具&#xff01;Google Muse AI 图源&#xff1a;Muse …

【参考答案】java基础练习:选择结构(if、switch)

if&#xff1a;if...else...及if嵌套 提示用户输入三个整数&#xff0c;判断并输出最大值、最小值 package com.qzcsbj;import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner input new Scanner(System.in);System.out.print("…

【正点原子FPGA连载】第十二章U-Boot移植 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十二章U-Boot移…

CVR预估模型ESMM

1. 概述 一般在对CVR建模的过程中&#xff0c;正样本选择的是在点击后有转化的样本作为正样本&#xff0c;负样本则是在点击后没有转化的样本作为负样本。然而&#xff0c;这样的建模方式存在一定的问题&#xff1a; Sample Selection Bias&#xff08;SSB&#xff09;问题&a…

ArcGIS基础实验操作100例--实验90创建点、线、面要素混合的Voronoi

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 空间分析篇--实验90 创建点、线、面要素混合的Voronoi 目录 一、实验背景 二、实验数据 三、实验步骤 …

回收租赁商城系统功能拆解08讲-售后退款

回收租赁系统适用于物品回收、物品租赁、二手买卖交易等三大场景。 可以快速帮助企业搭建类似闲鱼回收/爱回收/爱租机/人人租等回收租赁商城。 回收租赁系统支持智能评估回收价格&#xff0c;后台调整最终回收价&#xff0c;用户同意回收后系统即刻放款&#xff0c;用户微信零…

使用nginx和ffmpeg搭建HLS流媒体服务器

使用nginx和ffmpeg搭建HLS流媒体服务器 文章目录使用nginx和ffmpeg搭建HLS流媒体服务器1 安装ffmpeg2 安装nginx3 nginx有关HLS参数配置ffmpeg进行HLS切片VLC播放验证最近研究HLS流媒体协议&#xff0c;需要临时搭建HLS服务器&#xff0c;这里记录下搭建的过程(操作系统&#x…

计算机制图设计教程-以全国降水处理为例

前言本博客主要是通过一幅完整数字地图的制作过程&#xff0c;巩固计算机制图内容&#xff0c;报告中涉及到了地图数字化、空间数据的存储与管理、空间数据库的建立、符号化、制图综合技术和空间分析等内容。从而锻炼自身的动手实践能力&#xff0c;了解一幅地图制作设计的完整…

2022年江西省首届职业院校教师数字经济职业技能比赛“信息安全”赛项竞赛任务书

2022年江西省首届职业院校教师数字经济职业技能比赛“信息安全”赛项竞赛任务书 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 90分钟 200分 A-2 数据库加固 A-3 服务加固 A-4 防火墙策略 B模块 B-1 Windows操作系统渗透测试 400分 B…

云间玉兔,自出机抒,从零开始制作Web插件网页特效小兔子组件(小挂件widget),基于原生CSS/NPM

著意登楼瞻玉兔&#xff0c;何人张幕遮银阙&#xff1f;又到了一年一度的网页小挂件环节&#xff0c;以往我们都是集成别人开源的组件&#xff0c;但所谓熟读唐诗三百首&#xff0c;不会做诗也会吟&#xff0c;熟读了别人的东西&#xff0c;做几首打油诗也是可以的&#xff0c;…

数据降维-MDS 算法

数据降维-MDS 算法 文章目录数据降维-MDS 算法算法概述算法步骤算法证明代码参考算法概述 MDS的初衷是将图结构中的距离在空间的一种表示。 例如&#xff0c;已知几个城市的距离&#xff0c;但是不知道城市的坐标&#xff0c;那么MDS就能通过距离矩阵转换成空间坐标向量来近似…

mock的基本使用

mock的基本使用官网文档mockjs是用来模拟产生一些虚拟的数据&#xff0c;可以让前端在后端接口还没有开发出来时独立开发&#xff0c;mockjs可以拦截ajax请求&#xff0c;返回设定好的数据。注意&#xff1a;mock&#xff08;模拟数据&#xff09;数据需要使用到mockjs模块&…