利用散列表(哈希表)实现查找

方法:除留余数法 建立函数为:H(key) = (key*3) MOD 7, 装填因子为0.7,采用线性探测法处理冲突,生成散列表,然后进行查找操作: #include<iostream> using namespace std; #define SUCCESS 1 #define UNSUCCESS 0 #define DUPLICATE -1 typedef struct{ int key; }TypeElement; typedef struct{ TypeElement *elem; }HashTable; int EQ(int m,int n) { if(m == n) return 1; else return 0; } void CreatHashTable(HashTable &T) { int a[7]; int m,n; cout << “请输入7个数:” << endl; for(m = 0 ;m < 7; m++) { cin >> a[m]; } T.elem = (TypeElement *)malloc(10*sizeof(TypeElement)); for(m = 0;m < 7;m++) { int n = ( a[m] * 3) % 7;//求元素的地址 while(T.elem[n].key!=NULL)//若该地址已有元素则下调; n++; T.elem[n].key= a[m]; } } int SearchHashTable(HashTable T,int k,int &p) { p = (k * 3) % 7; while(T.elem[p].key!= NULL && !EQ(k,T.elem[………

折半查找

#include<iostream> using namespace std; typedef struct { int key; }ElemType; typedef struct{ ElemType *elem; int length; }SSTable; //判断a是否等于b int EQ(int a,int b) { if (a == b) return 1; else return 0; } //判断a是否小于b int LT (int a,int b) { if ( a < b) return 1; else return 0; } //判断a是否小于等于b int LQ(int a,int b) { if ( a <= b) return 1; else return 0; } //静态查找表的建立 void SSTable_Creat(SSTable &ST, int n) { int m = 1; ST.elem = (ElemType*)malloc(sizeof(ElemType)*(n)); for ( m ; m < n+1 ; m++) { cout << “请输入第” << m << “的数据:”; cin >> ST.elem[m].key; } ST.length = n; } //无序线性表的的顺序查找 int Search_1(SSTable ST,int key) { int i = 0; ST.elem[0].key = key; /* i = ST.length; while( ST.elem[i].key != key) { –i; } */ for ( i………

让wordpress支持markdown

缘由 几天前,我朋友看了我的博客说道,你的代码在博客里面排版一点也不美观,也不能高亮,于是向我推荐了markdown,我搜了相关与markdown和代码高亮的资料,并不断尝试找到了以下方法。 方法 使用插件(可直接在插件里面搜到) Disable Gutenberg 禁用wordpress5.0(5.0一下版本未测试过)原版编辑器,否则会在代码框中出现 乱码 的问题(比如在C++文件中会把 B(No.2) B –> C{think} C –>|是| C1[No.3] C –>|否| C2[No.4] C –>|随机|D[No.4] | 序号 | Value | Qty | |: – 😐 : – : | : – : | |1|PDF阅读器|正版| |2|有道云笔记|正版| |3|百度网盘|正版| |4|MS office|盗版| 可全屏编辑文章 浏览器中全屏 ESC退出 支持代码高亮(程序猿) 我的文章示例 应该还可以加入什么代码高亮插件支持copy,之前有过,后来不小心删了就搞忘了 可使用tab键 程序员常用 添加图片方便 插入图片只要网址即可,比如google一个图片,按格式 ![图片地址] 即可; 建议注册一个 cloudinary 来存放自己的图片后,获取地址来添加的blog(可优化主机内存,加快访问速度); 示例如下: 更多功能和体验欢迎大家继续去探索和发现,如有什么值得高兴的东西,欢………

Git使用教程

我学习参考了一下网站: Git教程 | 廖雪峰的官方网站 Git教材 | 菜鸟教程 Key配置 | CSDN YOUTUBE | 学习视频教程 下载安装(ubuntu下) 我使用的环境是Ubuntu 18.04,其他系统上问题和流程应该类似 可以参照  Git安装配置|菜鸟教程 $ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \libz-dev libssl-dev $ apt-get install git $ git –version git version 1.8.1.2 设置Git的user name和email:(如果是第一次的话) git config –global user.name “你的Github用户名” git config –global user.email “你的Github注册邮箱” #查看个人信息设置 git config –list Git Key配置(我几天都卡在这里了) 参照:GIt KEY 配置 检查是否已经有SSH Key. cd~/.ssh 接着输入ls, ls 列出该文件下的文件,看是否存在 id_isa 和 id_isa.pub 文件(也可以是别的文件名,只要 yourName 和 yourName.pub 承兑存在),如果存在的话,证明已经存在 ssh key了,可以直接跳过生成密钥这一步骤, 生成密钥 ssh-keygen -t rsa -C “你的Github邮箱” 连续3个回车。如果不需要密码的话。 最后得到了两个文件:id_rsa和id_rsa.pub。 添加密钥到ssh-agent 确保 ssh-a………

二叉树的遍历

可以观看一个视频来了解具体过程,我感觉讲的很好! Youtube视频教程 在Github数据结构代码,比如我的:Github #include<stdio.h> #include<iostream> using namespace std; #define OVERFLOW -1 #define OK 1 #define ERROE -2 #define MaxSize 100 typedef struct BiTNode{ //二叉树的二叉链表存储结构 char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; void CreatTree(BiTree &T)//先序序列构造二叉树,递归思想 { char m; scanf(“%c”,&m); //单个字符输入 if ( m == ‘ ‘) T = NULL; else { if( !(T = (BiTNode *) malloc (sizeof(BiTNode) ) ) ) exit(OVERFLOW); T->data = m; CreatTree(T->lchild); CreatTree(T->rchild); } } void PreOrderTraverse(BiTree T)//递归,先序遍历 { if( T != ) { cout << T->data << ” “; PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } } void Display(BiTree T,int &i)//递归判断输出叶子节点//即在先序遍历………

用 C++ 和栈实现数制转换和进制转换

用 C++ 和栈实现数制转换和进制转换 /* 用 C++ 和 栈 实现数制转换 和 进制转换 */ #include”malloc.h” //调用 malloc 和 realloc,不可或缺 #include”iostream” //把这几个 ” ” 换成 < > #include”stdlib.h” // #include”string.h” // using namespace std; #define STACK_INIT_SIZE 100 //初始栈的大小 #define STACKINCREMENT 10 //栈的增量大小 typedef int SElemType; //定义栈结构 typedef struct { SElemType *top; SElemType *base; int stacksize; }SqStack; //建立栈 void InitStack(SqStack &S) { S.base = (SElemType *) malloc (STACK_INIT_SIZE * sizeof(SElemType)); // <=> S.base = (SElemType *) new int(STACK_INIT_SIZE * sizeof(SElemType)); if (!S.base) { cout << endl << “分配储存空间失败!” << endl;//Allocate space failure! } S.top = S.base; S.stacksize = STACK_INIT_SIZE; } //插入元素e void Push(SqStack &S, SElemType e) { if (S.top – S.base >= S.stacksize) //如果栈满,追加储存空间 { S.base = (SElemType )………

基于C++实现链表的(头插法/尾插法)创建链表/插入数据/删除数据

基于C++实现链表的(头插法/尾插法)创建链表/插入数据/删除数据 #include<malloc.h> #include<iostream> using namespace std; class Data{ public: Data *CreatList_h(); //头插法建立链表 Data *CreatList_t(int n); //尾插法建立链表 Data *InsertList(Data *L,int n); //向链表指定位置n插入元素 Data *DeleteList(Data *L,int n); //删除链表中的指定值n void FindList(Data *L,int m); //查找链表中指定元素的位置 void OutputList(Data *L); //输出链表的所有值 //private: //不能为private :否则系统编译不通过,且报错,目前不清楚原因,欢迎留言; int n; //链表长度 int data; Data *next; }; int main(){ Data L; int i=0; while(i != 7){ cout << “***菜单****“ << endl; cout << “1.头插法建立链表\n2.尾插法建立链表\n3.向链表指定位置插入元素\n4.删除链表中的指定值\n5.查找链表中指定元素的位置\n6.输出链表的所有值\n7.退出\n请选择:” ; cin >> i; switch(i){ case 1 :L = L->CreatList_h();break; case 2 : { ………

zh-CN 简体中文
X