当前位置: 首页 > 编程日记 > 正文

基础数据结构【四】————环形链表与多项式

主要演示环形列表节点的创建插入, 删除,遍历,环形链表连接 。双向链表节点的建立与插入 ,双向链表中节点的删除 以及环形链表在多项式中的应用

DEMO1:环形链表节点的创建与插入  

/*
[名称]:ch03_08.cpp
[示范]:环形链表节点的创建与插入 
*/
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string.h> 
#include <iomanip>
using namespace std;
class list
{   public:int num,score;char name[10];class list *next;
};
typedef struct list node;
typedef node *link;link findnode(link head,int num)
{link ptr;ptr=head;while(ptr!=NULL){if(ptr->num==num)return ptr;ptr=ptr->next;}return ptr;
}link insertnode(link head,link after,int num,int score,char name[10])   
{  link InsertNode;InsertNode=new node;link CurNode=NULL;InsertNode->num=num;InsertNode->score=score;strcpy(InsertNode->name,name);InsertNode->next=NULL;if(InsertNode==NULL){cout<<"内存分配失败"<<endl;return NULL;}else{if(head==NULL)	//链表是空的{head=InsertNode;InsertNode->next=head;return head;}              else{if(after==NULL)	//新增节点到链表头部的位置{//(1)将新增节点的指针指向链表头部InsertNode->next=head;CurNode=head;while(CurNode->next!=head)CurNode=CurNode->next;//(2)找到链表尾部,将它的指针指向新增节点CurNode->next=InsertNode;//(3)将链表头指针向新增节点head=InsertNode;return head;}else //新增节点到链表头部以外的地方{//(1)将新增节点的指针指向after的下一个节点InsertNode->next=after->next;//(2)将节点after的指针指向新增节点after->next=InsertNode;return head; }} }
}int main()
{  link head,ptr,newnode;int new_num, new_score;char new_name[10];int i,j,position=0,find,data[12][2];char namedata[12][10]={{"Allen"},{"Scott"},{"Marry"},{"John"},{"Mark"},{"Ricky"},{"Lisa"},{"Jasica"},{"Hanson"},{"Amy"},{"Bob"},{"Jack"}};srand((unsigned)time(NULL));cout<<"座号  成绩  座号  成绩  座号  成绩  座号  成绩"<<endl;cout<<"=============================================="<<endl;for(i=0;i<12;i++){  data[i][0]=i+1;data[i][1]=rand()%50+51;}for(i=0;i<3;i++){  for (j=0;j<4;j++)cout<<"["<<data[j*3+i][0]<<"] ["<<data[j*3+i][1]<<"]  ";cout<<endl;}head=new node;  //建立链表的头指针if(!head){  cout<<"Error!! 内存分配失败!!"<<endl;exit(1);}head->num=data[0][0];for (j=0;j<10;j++)head->name[j]=namedata[0][j];head->score=data[0][1];head->next=NULL;ptr=head;for(i=1;i<12;i++)  //建立链表{  newnode=new node;newnode->num=data[i][0];for (j=0;j<10;j++)newnode->name[j]=namedata[i][j];newnode->score=data[i][1];newnode->next=NULL;ptr->next=newnode;//将前一个节点指向新创建的节点ptr=newnode; //新节点成为前一个节点}newnode->next=head;//将最后一个节点指向头部节点就成了环形链表while(1){  cout<<"请输入要插入其后的学生编号,结束输入-1:";cin>>position;if(position==-1)    /*循环中断条件*/break;else{  ptr=findnode(head,position);cout<<"请输入新插入的学生编号:";cin>>new_num;cout<<"请输入新插入的学生成绩:";cin>>new_score;cout<<"请输入新插入的学生姓名:";cin>>new_name;head=insertnode(head,ptr,new_num,new_score,new_name);}}ptr=head;//指向链表的开头cout<<"\n\t座号\t    姓名\t成绩\n";      cout<<"\t==============================\n";do{cout<<"\t["<<ptr->num<<"]\t[ "<<setw(10)<<ptr->name<<"]\t["<<ptr->score<<"]\n";ptr=ptr->next;//指向下一个节点} while(head!=ptr && head!=head->next);delete newnode;system("pause");return 0;
}

DEMO2:环形链表节点的删除 

/*
[名称]:ch03_09.cpp
[示范]:环形链表节点的删除 
*/
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;
class list
{  public:int num,score;char name[10];class list *next;
};
typedef class list node;
typedef node *link;link findnode(link head,int num)
{link ptr;ptr=head;while(ptr!=NULL){if(ptr->num==num)return ptr;ptr=ptr->next;}return ptr;
}link deletenode(link head,link del)   
{link CurNode=NULL;  link PreNode=NULL;link TailNode=NULL;if(head==NULL){cout<<"[环形链表已经空了]";return NULL;}else{if(del==head) //删除的节点是链表头部{CurNode=head;while(CurNode->next!=head)CurNode=CurNode->next;//找到最后一个节点并记录下来TailNode=CurNode;//(1)将链表头指针移到下一个节点head=head->next;//(2)将链表最后一个节点的指针指向新的链表头部TailNode->next=head;return head;} else //要删除的节点不是链表头部{CurNode=head;while(CurNode->next!=del)CurNode=CurNode->next;//(1)找到要删除节点的前一个节点并记录下来PreNode=CurNode;//要删除的节点CurNode=CurNode->next;//(2)将要删除节点的前一个指针指向要删除节点的下一个节点PreNode->next=CurNode->next;free(CurNode);return head;}}
}int main()
{  link head,ptr,newnode;int new_num, new_score;char new_name[10];int i,j,position=0,find,data[12][2];char namedata[12][10]={{"Allen"},{"Scott"},{"Marry"},{"John"},{"Mark"},{"Ricky"},{"Lisa"},{"Jasica"},{"Hanson"},{"Amy"},{"Bob"},{"Jack"}};srand((unsigned)time(NULL));cout<<"座号  成绩  座号  成绩  座号  成绩  座号  成绩"<<endl;cout<<"=============================================="<<endl;for(i=0;i<12;i++){  data[i][0]=i+1;data[i][1]=rand()%50+51;}for(i=0;i<3;i++){  for (j=0;j<4;j++)cout<<"["<<data[j*3+i][0]<<"]"<<setw(4)<<"["<<data[j*3+i][1]<<"]  ";cout<<endl;}head=new node;   //建立链表头指针if(!head){  cout<<"Error!! 内存分配失败!!"<<endl;exit(1);}head->num=data[0][0];for (j=0;j<10;j++)head->name[j]=namedata[0][j];head->score=data[0][1];head->next=NULL;ptr=head;for(i=1;i<12;i++) //建立链表{  newnode=new node;newnode->num=data[i][0];for (j=0;j<10;j++)newnode->name[j]=namedata[i][j];newnode->score=data[i][1];newnode->next=NULL;ptr->next=newnode;	//将前一个节点指向新建立的节点ptr=newnode;			//新节点成为前一个节点}newnode->next=head;		//将最后一个节点指向头部节点就成了环形链表while(1){  cout<<"请输入要删除的学生编号,结束输入-1:";cin>>position;if(position==-1) //循环中断条件break;else{  ptr=findnode(head,position);head=deletenode(head,ptr);}}ptr=head;//指向链表的开头cout<<"\n\t座号\t    姓名\t成绩\n";         cout<<"\t==============================\n";do{cout<<"\t["<<ptr->num<<"]\t[ "<<setw(10)<<ptr->name<<"]\t["<<ptr->score<<"]"<<endl;ptr=ptr->next;//指向下一个节点} while(head!=ptr && head!=head->next);free(head);system("pause");return 0;
}

DEMO3:

[示范]:将两个学生成绩的环形链表连接起来,然后打印出连接后的链表内容

/*
[名称]:ch03_10.cpp
[示范]:将两个学生成绩的环形链表连接起来,然后打印出连接后的链表内容
*/
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
using namespace std;
class list
{public:int num,score;char name[10];class list *next;
};
typedef class list node;
typedef node *link;
link creat_link(int data[10][2],int num);
void print_link(link head);
link concat(link ptr1,link ptr2);
int main()
{  link ptr1,ptr2,ptr;int i,data1[6][2],data2[6][2];srand(time(NULL));for (i=1;i<=6;i++){  data1[i-1][0]=i*2-1;data1[i-1][1]=rand()%49+52;data2[i-1][0]=i*2;data2[i-1][1]=rand()%49+52;}ptr1=creat_link(data1,6);//建立串行1ptr2=creat_link(data2,6);//建立串行2i=0;cout<<"\t\t       原 链 表 数 据:"<<endl;cout<<"\t    座号 成绩   座号 成绩   座号 成绩"<<endl;cout<<"\t    =================================="<<endl;cout<<"环形链表1 :";print_link(ptr1);cout<<"环形链表2 :";print_link(ptr2);cout<<"\t    =================================="<<endl;cout<<"连接后的链表:";ptr=concat(ptr1,ptr2);			//连接环形链表print_link(ptr);system("pause");
}
link creat_link(int data[10][2],int num) //建立链表子程序
{  link head,ptr,newnode;for(int i=0;i<num;i++){  newnode=new node;if(!newnode){  cout<<"Error!! 内存分配失败!!"<<endl;exit(i);}if(i==0)//建立链表头部{  newnode->num=data[i][0];newnode->score=data[i][1];newnode->next=NULL;head=newnode;ptr=head;}else //建立链表其他节点{  newnode->num=data[i][0];newnode->score=data[i][1];newnode->next=NULL;ptr->next=newnode;ptr=newnode;}newnode->next=head;}return ptr;//返回链表
}
void print_link(link head)//打印链表子程序
{  link ptr;int i=0;ptr=head->next;do {  cout<<"["<<setw(2)<<ptr->num<<"-"<<setw(3)<<ptr->score<<"] -> ";i++;if(i>=3)//每行打印三个元素{  cout<<"\n\t    ";i=0;}ptr=ptr->next;}while(ptr!=head->next);cout<<endl;
}
link concat(link ptr1,link ptr2)		//连接链表子程序
{  link head;head=ptr1->next;		//在ptr1和ptr2中,各找任意一个节点ptr1->next=ptr2->next;	//把两个节点的next对调即可ptr2->next=head;return ptr2;
}

DEMO4:双向链表节点的建立与插入

/*
[名称]:ch03_11.cpp
[示范]:双向链表节点的建立与插入 
*/
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string.h> 
#include <iomanip>
using namespace std;
class list
{  public:int num,score;char name[10];class list *llink;class list *rlink;
};
typedef class list node;
typedef node *link;link findnode(link head,int num)
{link ptr;ptr=head;while(ptr!=NULL){if(ptr->num==num)return ptr;ptr=ptr->rlink;}return ptr;
}link insertnode(link head,link ptr,int num,int score,char name[10])   
{  link newnode=(link)malloc(sizeof(node));link newhead=(link)malloc(sizeof(node));newnode=new node;//memset(newnode,0,sizeof(node));newnode->num=num;newnode->score=score;strcpy(newnode->name,name);if(head==NULL) /*双向链表是空的*/{newnode=new node;// memset(newhead,0,sizeof(node));       newhead->num=num;newhead->score=score;strcpy(newhead->name,name);return newhead;}else{if(ptr==NULL){cout<<"[错误:不是链表中的节点]"<<endl;}if(ptr==head) //插入链表头部的位置{head->llink=newnode;newnode->rlink=head;head=newnode;}else{if(ptr->rlink==NULL) //插入链表末尾的位置{ptr->rlink=newnode;newnode->llink=ptr;newnode->rlink=NULL;}else //插入中间节点的位置{newnode->rlink=ptr->rlink;ptr->rlink->llink=newnode;ptr->rlink=newnode;newnode->llink=ptr;}}}return head;
}
int main(void)
{  link head,ptr;link llinknode=NULL;link newnode=NULL;int new_num, new_score;char new_name[10];int i,j,position=0,find,data[12][2];char namedata[12][10]={{"Allen"},{"Scott"},{"Marry"},{"John"},{"Mark"},{"Ricky"},{"Lisa"},{"Jasica"},{"Hanson"},{"Amy"},{"Bob"},{"Jack"}};srand((unsigned)time(NULL));cout<<"座号  成绩  座号  成绩  座号  成绩  座号  成绩"<<endl;cout<<"=============================================="<<endl;for(i=0;i<12;i++){  data[i][0]=i+1;data[i][1]=rand()%50+51;}for(i=0;i<3;i++){  for (j=0;j<4;j++)cout<<"["<<setw(2)<<data[j*3+i][0]<<"] ["<<setw(3)<<data[j*3+i][1]<<"]  ";cout<<endl;}head=new node;//建立链表头指针if(head==NULL){  cout<<"Error!! 内存分配失败!!"<<endl;exit(1);}else{head=new node;head->num=data[0][0];for (j=0;j<10;j++)head->name[j]=namedata[0][j];head->score=data[0][1];llinknode=head;for(i=1;i<12;i++) //建立链表{  newnode=new node;newnode->llink = NULL;newnode->rlink = NULL;newnode->num=data[i][0];for (j=0;j<10;j++)newnode->name[j]=namedata[i][j];newnode->score=data[i][1];llinknode->rlink=newnode;newnode->llink=llinknode;llinknode=newnode;}}while(1){  cout<<"请输入要插入其后的学生编号,结束输入-1:";cin>>position;if(position==-1)//循环中断条件break;else{  ptr=findnode(head,position);cout<<"请输入新插入的学生编号:";cin>>new_num;cout<<"请输入新插入的学生成绩:";cin>>new_score;cout<<"请输入新插入的学生姓名:";cin>>new_name;head=insertnode(head,ptr,new_num,new_score,new_name);}}cout<<endl<<"\t座号\t    姓名\t成绩"<<endl;         cout<<"\t=============================="<<endl;ptr=head;while(ptr!=NULL){cout<<"\t["<<setw(2)<<ptr->num<<"]\t[ "<<setiosflags(ios::left)<<setw(10)<<ptr->name<<"]\t["<<setw(3)<<ptr->score<<"]"<<endl;ptr=ptr->rlink;   }free(head);free(newnode);system("pause");return 0;
}

DEMO5:双向链表中节点的删除 

/*
[名称]:ch03_12.cpp
[示范]:双向链表中节点的删除 
*/
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;
class list
{  public:int num,score;char name[10];class list *llink;class list *rlink;
};
typedef class list node;
typedef node *link;link findnode(link head,int num)
{link ptr;ptr=head;while(ptr!=NULL){if(ptr->num==num)return ptr;ptr=ptr->rlink;}return ptr;
}link deletenode(link head,link del)   
{  if(head==NULL) //双向链表是空的{cout<<"[链表是空的]"<<endl;return NULL;}if(del==NULL){cout<<"[错误:不是链表中的节点]"<<endl;return NULL;}if(del==head){head=head->rlink;          head->llink=NULL;}else{if(del->rlink==NULL) //删除链表尾{del->llink->rlink=NULL;}else //删除中间节点{del->llink->rlink=del->rlink;del->rlink->llink=del->llink;}}free(del);return head;
}int main()
{  link head,ptr;link llinknode=NULL;link newnode=NULL;int new_num, new_score;char new_name[10];int i,j,position=0,find,data[12][2];char namedata[12][10]={{"Allen"},{"Scott"},{"Marry"},{"John"},{"Mark"},{"Ricky"},{"Lisa"},{"Jasica"},{"Hanson"},{"Amy"},{"Bob"},{"Jack"}};srand((unsigned)time(NULL));cout<<"座号  成绩  座号  成绩  座号  成绩  座号  成绩"<<endl;cout<<"=============================================="<<endl;for(i=0;i<12;i++){  data[i][0]=i+1;data[i][1]=rand()%50+51;}for(i=0;i<3;i++){  for (j=0;j<4;j++)cout<<"["<<setw(2)<<data[j*3+i][0]<<"] ["<<setw(3)<<data[j*3+i][1]<<"]  ";cout<<endl;}head=new node; //建立链表头指针if(head==NULL){  cout<<"Error!! 内存分配失败!!"<<endl;exit(1);}else{head=new node;head->num=data[0][0];for (j=0;j<10;j++)head->name[j]=namedata[0][j];head->score=data[0][1];llinknode=head;for(i=1;i<12;i++) //建立链表{  newnode=new node;newnode->llink = NULL;newnode->rlink = NULL;newnode->num=data[i][0];for (j=0;j<10;j++)newnode->name[j]=namedata[i][j];newnode->score=data[i][1];llinknode->rlink=newnode;newnode->llink=llinknode;llinknode=newnode;}}while(1){  cout<<"请输入删除的学生编号,结束输入-1:";scanf("%d",&position);if(position==-1) //循环中断条件break;else{  ptr=findnode(head,position);head=deletenode(head,ptr);}}cout<<endl<<"\t座号\t    姓名\t成绩"<<endl;         cout<<"\t=============================="<<endl;ptr=head;while(ptr!=NULL){cout<<"\t["<<setiosflags(ios::right)<<setw(2)<<ptr->num<<"]\t[ "<<setiosflags(ios::left)<<setw(10)<<ptr->name<<"]\t["<<setw(3)<<ptr->score<<"]"<<endl;ptr=ptr->rlink;   }system("pause");return 0;
}

DEMO6:多项式相加

/*
[名称]:ch03_13.cpp
[示范]:多项式相加
*/
#include <iostream>
using namespace std;
class list //声明链表结构
{  public :int coef,exp;class list *next;
};
typedef class list node;
typedef node *link;
link creat_link(int data[4]);
void print_link(link head);
link sum_link(link a,link b);
int main()
{  link a,b,c;int data1[4]={3,0,4,2}; //多项式A的系数int data2[4]={6,8,6,9}; //多项式B的系数cout<<"原始多项式:"<<endl<<"A=";a=creat_link(data1);    //建立多项式Ab=creat_link(data2);    //建立多项式Bprint_link(a);          //打印多项式Acout<<"B=";print_link(b);          //打印多项式Bcout<<"多项式相加的结果:\nC=";c=sum_link(a,b);        //C为A、B多项式相加的结果print_link(c);          //打印多项式Csystem("pause");
}
link creat_link(int data[4])//建立多项式子程序
{link head,newnode,ptr;for(int i=0;i<4;i++){  newnode = new node;if(!newnode){  cout<<"Error!! 内存分配失败!!"<<endl;exit(1);}if(i==0){  newnode->coef=data[i];newnode->exp=3-i;newnode->next=NULL;head=newnode;ptr=head;}else if(data[i]!=0){  newnode->coef=data[i];newnode->exp=3-i;newnode->next=NULL;ptr->next=newnode;ptr=newnode;}}return head;
}
void print_link(link head) //打印多项式子程序
{  while(head!=NULL) {  if(head->exp==1 && head->coef!=0)	//X^1时不显示指数cout<<head->coef<<"X + ";else if(head->exp!=0 && head->coef!=0)cout<<head->coef<<"X^"<<head->exp<<" + ";else if(head->coef!=0)           	//X^0时不显示变量cout<<head->coef;head=head->next;}cout<<endl;
}
link sum_link(link a,link b) //多项式相加子程序
{  int sum[4],i=0;link ptr;ptr=b;while(a!=NULL) //判断多项式1{  b=ptr; 	//重复比较A和B的指数while(b!=NULL){  if(a->exp==b->exp)	//指数相等,系数相加{  sum[i]=a->coef+b->coef;a=a->next;b=b->next;i++;}else if(b->exp > a->exp)	//B指数较大,指定系数给C{  sum[i]=b->coef;b=b->next;i++;}else if(a->exp > b->exp)	//A指数较大,指定系数给C{  sum[i]=a->coef;a=a->next;i++;}}}return creat_link(sum);	//建立相加结果的链表C
}

相关文章:

关联scala源码

首先需要去官网下载sources 将下载好的压缩包拷贝到scala安装的lib目录下&#xff0c;解压 ctrlb以后 查看源码, 选择要查看的方法或者类, 输入 ctrl b import scala.io.StdIn 如果想看StdIn的源码&#xff0c;则将光标放在StdIn处&#xff0c;ctrlb 如果想查看io包下的内容&…

MySQL安装使用的2个问题

问题:1.遇到不输入密码能登上 ,使用密码报错.2.(解压版的) 在cmd输入>mysql –u root –p 时&#xff0c;按enter回车时&#xff0c;会叫你输入密码Enter password____,否则出现错误&#xff1a;ERROR 1045(28000):Access denied for user’root’’localhost’(using passw…

Flink1.7.2 sql 批处理示例

Flink1.7.2 sql 批处理示例 源码 https://github.com/opensourceteams/flink-maven-scala概述 本文为Flink sql Dataset 示例主要操作包括:Scan / Select,as (table),as (column),limit,Where / Filter,between and (where),Sum,min,max,avg,(group by ),group by having,disti…

ISP 【一】————boost标准库使用——批量读取保存文件 /boost第三方库的使用及其cmake添加,图像gramma

CMakeLists.txt文件中需要添加第三方库&#xff0c;并企鹅在CMakeLists.txt中添加 include_directories(${PROJECT_SOURCE_DIR}/../3party/gflags-2.2.2/include) link_directories(${PROJECT_SOURCE_DIR}/../3party/boost-1.73.0/lib-import) target_link_libraries( gram…

简单ajax类, 比较小, 只用ajax功能时, 可以考虑它

忘了哪儿转来的了, 不时的能够用上, 留存一下<script language"javascript" type"text/javascript"> /***var ajaxAjax();/*get使用方式* /ajax.get("php_server.php?id1&namexxx", function(data){ alert(data); //d…

Hadoop 三大发行版本

Hadoop三大发行版本&#xff1a;Apache、Cloudera、Hortonworks。 Apache版本最原始&#xff08;最基础&#xff09;的版本&#xff0c;对于入门学习最好。 Cloudera在大型互联网企业中用的较多。 Hortonworks文档较好。 1. Apache Hadoop 官网地址&#xff1a;http://had…

MongoDB主动撤回SSPL的开源许可申请

2018年10月&#xff0c;MongoDB将其开源协议更换为SSPL&#xff0c;虽然在当时引起了很大的争议&#xff0c;但是MongoDB始终坚信SSPL符合符合开源计划的批准标准&#xff0c;并向Open Source Initiative &#xff08;以下简称OSI&#xff09;提交了申请。不过&#xff0c;近日…

MATLAB【八】———— matlab 读取单个(多个)文件夹中所有图像

0.matlab 移动&#xff08;复制&#xff09;文件到另一个文件夹 sourcePath .\Square_train; targetPath .\Square_test; fileList dir(sourcePath); for k 3 :5: length(fileList) movefile([sourcePath,\,fileList(k).name],targetPath); end %copyfile([sourcePat…

JAVA IO学习

2019独角兽企业重金招聘Python工程师标准>>> 很多初学者接触IO时&#xff0c;总是感觉东西太多&#xff0c;杂乱的分不清楚。其实里面用到了装饰器模式封装&#xff0c;把里面的接口梳理一下之后&#xff0c;就会觉得其实蛮清晰的 相关的接口和类 接口或类描述Input…

Java面向对象三大特征 之 多态性

1、理解多态性&#xff1a;可以理解为一个事物的多种形态 2、对象的多态性&#xff1a;父类的引用指向子类的对象&#xff08;子类的对象赋给父类的引用&#xff09; 3、多态的使用&#xff1a;虚拟方法的调用 子类中定义了与父类同名同参数的方法&#xff08;重写&#xff…

Bootstrap3基础 btn-group-vertical 按钮组(横着、竖着排列)

内容参数OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor Visual Studio Code 1.32.1 typesetting Markdowncode <!DOCTYPE html> <html lang"zh-CN"><head><meta charset&quo…

ISP【二】————camera ir图

1. 加串解串芯片作用&#xff1f; A: 加串和解串是成对出现的&#xff0c;串行器在模组内&#xff0c;将并行信号转换为串行信号&#xff0c;然后用一根线可以实现远距离传输。sensor输出的raw data如果不加串&#xff0c;需要&#xff18;根线传输&#xff0c;很难传输很远&a…

Hadoop运行模式 之 本地运行模式

Hadoop的运行模式包括&#xff1a;本地模式、伪分布式模式以及完全分布式模式 Hadoop官网地址&#xff1a;https://hadoop.apache.org/ 本次使用的Hadoop的版本是2.7.2 官网文档&#xff1a;https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/Single…

一些使用Vim的小技巧

7.增加注释&#xff08;一个操作应用在多行&#xff09;比如需要增加#或者是//这种注释&#xff1a;Ctrl v 定位到开始行&#xff0c;然后选定需要的行&#xff0c;然后执行 I命令&#xff0c;然后输入 # 或 //&#xff0c;然后按 Esc键两次&#xff0c;即可把注释操作应用到所…

SpringBoot注解大全 转

2019年3月17日22:30:10 一、注解(annotations)列表 SpringBootApplication&#xff1a;包含了ComponentScan、Configuration和EnableAutoConfiguration注解。其中ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。 Configuration 等同于spring的XML配置…

MATLAB【九】————ICP算法实现

1.ICP推导与求解 https://zhuanlan.zhihu.com/p/35893884 2.算法实现&#xff1a; % 程序说明&#xff1a;输入data_source和data_target两个点云&#xff0c;找寻将data_source映射到data_targe的旋转和平移参数 clear; close all; clc; %% 参数配置 kd 1; inlier_ratio …

Centos 7环境下源码安装PostgreSQL数据库

马上就要去实习了&#xff0c;工作内容是搞数据仓库方面的&#xff0c;用的是postgresql关系型数据库&#xff0c;于是自己先来了解下这种数据的用法&#xff0c;之后说说这个数据库和MySQL的关系和区别。 1.Postgresql简介 看了下官网上的介绍&#xff0c;全球最高级的开源关系…

Oracle job procedure 存储过程定时任务

Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能&#xff0c;可以在指定的时间点或每天的某个时间点自行执行任务。 一、查询系统中的job&#xff0c;可以查询视图 --相关视图 select * from dba_jobs; select * from all_jobs; select * from user_jobs; -…

Hadoop运行模式 之 伪分布式运行模式

什么是伪分布式模式&#xff1f;它与本地运行模式以及完全分布式模式有什么区别&#xff1f; 伪分布式的配置信息&#xff0c;完全是按照完全分布式的模式去搭建的&#xff0c;但是它只有一台服务器&#xff0c;可以用于学习和测试&#xff0c;真正的开发中不可以使用。 目录…

【C++】【一】结构体数组

demo7:函数份文件编写 swap.h #include <iostream> using namespace std;//函数的声明 void swap(int a, int b); swap.cpp #include "swap.h"//函数的定义 void swap(int a, int b) {int temp a;a b;b temp;cout << "a " << a …

Message、Handler、Message Queue、Looper之间的关系

2019独角兽企业重金招聘Python工程师标准>>> 在单线程模型下&#xff0c;为了解决线程通信问题&#xff0c;Android设计了一个通信机制。Message Queue(消息队列)&#xff0c; 线程间的通信可以通过Message Queue、Handler和Looper进行信息交换。下面将对它们进行逐…

在linux中只将“桌面”修改成“Desktop”而系统仍然使用中文

在安装好centos系统以后&#xff0c;它的Desktop&#xff0c;Downloads等文件夹都是中文的&#xff0c;桌面&#xff0c;下载等&#xff0c;这样在使用cd命令时特别不方便 解决方法一&#xff1a;下载一个中文输入法&#xff0c;安装 解决方法二&#xff1a; 修改il8n文件&a…

Zabbix 3.0 从入门到精通(zabbix使用详解)

第1章 zabbix监控 1.1 为什么要监控 在需要的时刻&#xff0c;提前提醒我们服务器出问题了 当出问题之后&#xff0c;可以找到问题的根源 网站/服务器 的可用性 1.1.1 网站可用性 在软件系统的高可靠性&#xff08;也称为可用性&#xff0c;英文描述为HA&#xff0c;High Avail…

MacBook如何用Parallels Desktop安装windows7/8

虽然MacBook真的很好用&#xff0c;不过在天朝的国情下&#xff0c;有很多软件还是仅支持IE和windows系统下才有。所以有必要为自己的MacBook装一个windows版本的系统&#xff0c;之前试过用Boot Camp来建立分区和安装win7&#xff0c;之后自己又用Parallels Desktop安装过win8…

在IDEA 中为Maven 配置阿里云镜像源

打开IntelliJ IDEA->Settings ->Build, Execution, Deployment -> Build Tools > Maven 注意要勾选上override 自己创建一个settings.xml文件&#xff0c; 内容如下 <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi"http:/…

【匹配算法】渐进一致采样 PROSAC(PROgressive SAmple Consensus)

方法简介 渐进一致采样法1 (PROSAC) 是对经典的 RANSAC2 中采样的一种优化。相比经典的 RANSAC 方法均匀地从整个集合中采样&#xff0c;PROSAC 方法是从不断增大的最佳对应点集合中进行采样的。所以这种方法可以节省计算量&#xff0c;提高运行速度。 论文&#xff1a;https:…

阿里巴巴开源的 Blink 实时计算框架真香

Blink 开源了有一段时间了&#xff0c;竟然没发现有人写相关的博客&#xff0c;其实我已经在我的知识星球里开始写了&#xff0c;今天来看看 Blink 为什么香&#xff1f; 我们先看看 Blink 黑色版本&#xff1a; 对比下 Flink 版本你就知道黑色版本多好看了。 你上传 jar 包的时…

【地图API】收货地址详解2

上次讲解的方法是&#xff1a; 在地图中心点添加一个标注&#xff0c;每次拖动地图就获取地图中心点&#xff0c;再把标注的位置设置为地图中心点。可参考教程&#xff1a;http://www.cnblogs.com/milkmap/p/6126424.html 可能有开发者觉得&#xff0c;这个算法会有“延时”&am…

MATLAB【十三】————仿真函数记录以及matlab变成小结

part one&#xff1a;matlab 编程小结。 1.char 与string的区别&#xff0c;char使用的单引号 ‘’ &#xff0c;string使用的是双引号“”。 2.一般标题中的输出一定要通过 num2str 处理&#xff0c;画图具体的图像细节参考&#xff1a;https://blog.csdn.net/Darlingqiang/ar…

IDEA HDFS客户端准备

在此之前&#xff1a;先进行在IDEA 中为Maven 配置阿里云镜像源 1、将资料包中的压缩包解压到一个没有中文的目录下 2、配置HADOOP_HOME环境变量 3、配置Path环境变量 4、创建一个Maven工程HDFSClientDemo 5、在pom.xml中添加依赖 <dependencies><dependency><g…