基础数据结构【四】————环形链表与多项式
主要演示环形列表节点的创建插入, 删除,遍历,环形链表连接 。双向链表节点的建立与插入 ,双向链表中节点的删除 以及环形链表在多项式中的应用
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目录下,解压 ctrlb以后 查看源码, 选择要查看的方法或者类, 输入 ctrl b import scala.io.StdIn 如果想看StdIn的源码,则将光标放在StdIn处,ctrlb 如果想查看io包下的内容&…

MySQL安装使用的2个问题
问题:1.遇到不输入密码能登上 ,使用密码报错.2.(解压版的) 在cmd输入>mysql –u root –p 时,按enter回车时,会叫你输入密码Enter password____,否则出现错误: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文件中需要添加第三方库,并企鹅在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三大发行版本:Apache、Cloudera、Hortonworks。 Apache版本最原始(最基础)的版本,对于入门学习最好。 Cloudera在大型互联网企业中用的较多。 Hortonworks文档较好。 1. Apache Hadoop 官网地址:http://had…

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

MATLAB【八】———— matlab 读取单个(多个)文件夹中所有图像
0.matlab 移动(复制)文件到另一个文件夹 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时,总是感觉东西太多,杂乱的分不清楚。其实里面用到了装饰器模式封装,把里面的接口梳理一下之后,就会觉得其实蛮清晰的 相关的接口和类 接口或类描述Input…

Java面向对象三大特征 之 多态性
1、理解多态性:可以理解为一个事物的多种形态 2、对象的多态性:父类的引用指向子类的对象(子类的对象赋给父类的引用) 3、多态的使用:虚拟方法的调用 子类中定义了与父类同名同参数的方法(重写ÿ…

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. 加串解串芯片作用? A: 加串和解串是成对出现的,串行器在模组内,将并行信号转换为串行信号,然后用一根线可以实现远距离传输。sensor输出的raw data如果不加串,需要8根线传输,很难传输很远&a…

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

一些使用Vim的小技巧
7.增加注释(一个操作应用在多行)比如需要增加#或者是//这种注释:Ctrl v 定位到开始行,然后选定需要的行,然后执行 I命令,然后输入 # 或 //,然后按 Esc键两次,即可把注释操作应用到所…

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

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

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

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

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

【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工程师标准>>> 在单线程模型下,为了解决线程通信问题,Android设计了一个通信机制。Message Queue(消息队列), 线程间的通信可以通过Message Queue、Handler和Looper进行信息交换。下面将对它们进行逐…

在linux中只将“桌面”修改成“Desktop”而系统仍然使用中文
在安装好centos系统以后,它的Desktop,Downloads等文件夹都是中文的,桌面,下载等,这样在使用cd命令时特别不方便 解决方法一:下载一个中文输入法,安装 解决方法二: 修改il8n文件&a…

Zabbix 3.0 从入门到精通(zabbix使用详解)
第1章 zabbix监控 1.1 为什么要监控 在需要的时刻,提前提醒我们服务器出问题了 当出问题之后,可以找到问题的根源 网站/服务器 的可用性 1.1.1 网站可用性 在软件系统的高可靠性(也称为可用性,英文描述为HA,High Avail…

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

在IDEA 中为Maven 配置阿里云镜像源
打开IntelliJ IDEA->Settings ->Build, Execution, Deployment -> Build Tools > Maven 注意要勾选上override 自己创建一个settings.xml文件, 内容如下 <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi"http:/…

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

阿里巴巴开源的 Blink 实时计算框架真香
Blink 开源了有一段时间了,竟然没发现有人写相关的博客,其实我已经在我的知识星球里开始写了,今天来看看 Blink 为什么香? 我们先看看 Blink 黑色版本: 对比下 Flink 版本你就知道黑色版本多好看了。 你上传 jar 包的时…

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

MATLAB【十三】————仿真函数记录以及matlab变成小结
part one:matlab 编程小结。 1.char 与string的区别,char使用的单引号 ‘’ ,string使用的是双引号“”。 2.一般标题中的输出一定要通过 num2str 处理,画图具体的图像细节参考:https://blog.csdn.net/Darlingqiang/ar…

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