鉴于在最近几次程序作业中所编写的函数在后面会随时用到,所以编写了tool.h以便之后使用(随写随更新)
// // Created by 杜逸凡 on 2019-12-01. // 工具头文件,其中包括多种个人常用函数 // #ifndef _TOOL_H #define _TOOL_H #include <iostream> #include <vector> #include <string> using namespace std; /* * 类型转换函数 */ //string型转int型 int str2int(string str){ int data_int=0; if(str[0]=='-'){ for(int i=1;i<str.length();i++) { data_int*=10; data_int+=(int(str[i])-48);//string 转 int } return -data_int; }else{ for(int i=0;i<str.length();i++) { data_int*=10; data_int+=(int(str[i])-48);//string 转 int } } return data_int; } //string型转long long型 long long str2ll(string str){ int data_ll=0; if(str[0]=='-'){ for(int i=1;i<str.length();i++) { data_ll*=10; data_ll+=(long long(str[i])-48);//string 转 int } return -data_ll; }else{ for(int i=0;i<str.length();i++) { data_ll*=10; data_ll+=(int(str[i])-48);//string 转 int } } return data_ll; } //int型转string型 inline string int2str(int num){ stringstream ss; ss<<num; return ss.str(); } //long long型转string型 inline string ll2str(long long num){ stringstream ss; ss<<num; return ss.str(); } /* * 树、图创建函数 */ //创建二叉树(结构体) typedef struct Binary_tree{ struct Binary_tree * left; int data; struct Binary_tree * right; }bt,*pbt; //创建二叉树 pbt create_Binary_tree(){ pbt p; string data; cout<<"please inupt data(if you want to stop,input *):"; cin>>data; if(data[0]=='*'){ p=NULL; return p; } else{ p=(pbt)malloc(sizeof(bt)); p->data=str2int(data); p->left=create_Binary_tree(); p->right=create_Binary_tree(); } return p; } //创建图(邻接表)(结构体) typedef struct graph_link{ int code; graph_link *next; }gl,*pgl; //创建图(邻接表),输入起点-终点组合,存入邻接表 vector<pgl> create_Adjacent(int point){ vector<pgl>adjacent; for(int i=0;i<point;i++) { pgl p=(pgl)malloc(sizeof(gl)); p->code=i+1; p->next=NULL; adjacent.push_back(p); } string start,end; while(1){ cout<<"please input start(if you want to stop,input *):"; cin>>start; if(start[0]=='*') break; cout<<"please input end:"; cin>>end; for(int i=0;i<point;i++) if(adjacent[i]->code==str2int(start)){ pgl node=(pgl)malloc(sizeof(gl)); node->next=NULL; node->code=str2int(end); pgl p=adjacent[i]; while(p->next!=NULL) p=p->next; p->next=node; } } return adjacent; } //字符串暴力匹配算法(Brute-force matching) void BFM(string target,string find){ unsigned long length_t,length_f; int judge,judge_f; length_t=target.size(); length_f=find.size(); for(int i=0;i<length_t;i++) { judge=i; judge_f=0; for(int j=0;j<length_f;j++) { if(find[j]!=target[i+judge_f]) break; if(j==length_f-1) cout<<judge<<' '; judge_f++; } } } #endif //_TOOL_H
更新日志:
2019-12-03 增加了类型转换函数对负数的支持
2019-12-21 修改了错误的函数名称以及其描述