数据结构
KEY_GSY
这个作者很懒,什么都没留下…
展开
-
hash冲突以及hash冲突的解决方法
首先说一下hash冲突吧,hash冲突在hash表中一般情况下是会遇到的;hash冲突指的是你在向hash表中存数据时,首先要通过key值进行指定的hash算法进行计算,然后得到一个值,这个值就是你要将这个key对应的value存入的地址。但是在这个地址中已经有值存在,所以这个时候就发生了hash冲突,不同的key通过hash算法得到了对应的同一个值。hash冲突解决的方法:再hash法:这种方法就是有多个hash算法,当使用一个hash算法计算得到值发生hash冲突时那就使用另外一个hash算法原创 2020-06-20 11:15:48 · 1204 阅读 · 0 评论 -
Java 中递归的讲解,以及实例应用。经典案例:迷宫问题以及八皇后问题解决
递归调用规则:1.当程序执行到一个方法时,就会开辟一个独立的空间(栈)2.每个空间的局部变量是独立的,不会相互影响3.如果方法中使用的是引用类型变量(例如数组),这个变量就是共享4.递归必须向退出条件逼近,否则就可能无限递归,会出现栈溢出5.当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也执行完毕递归的概念递归就是自己调用自己,每次传入不同的参数,递归有助于解决复杂的问题,同时可以让代码变得简洁。经典案例:迷宫问题,八皇后原创 2020-05-10 12:38:59 · 414 阅读 · 0 评论 -
Java中栈的实现,分别用数组和用链表来模拟
栈(stack)栈是一个先进后出的有序列表栈的插入和删除只可以在同一段操作,允许删除和插入的一端是栈顶(top),另一端为固定的一端,称为栈底(bottom)实现栈思路1.使用数组来模拟栈2.定义一个top来表示栈顶,初始化为-1.3.入栈的操作,当有数据入栈的时候,top++,stack[top]=data4.出栈操作,当有数据出栈时候,int value = stack[top],top–;使用数组来模拟实现package com.gsy.stack;import java.uti原创 2020-05-10 12:32:15 · 187 阅读 · 0 评论 -
Java单向环形链表,解决约瑟夫问题
单向环形问题的实际引用;约瑟夫问题解决构建一个单向环形链表思路:1.先创建第一个节点,让first指向该节点,并形成环2.当我们每创建一个新的节点,就将其加入到已有的环形链表中即可。遍历环形链表:1.先让一个辅助指针curBoy指向first2.然后通过一个whil循环遍历该环形链表,curBoy.next = first时候就遍历结束小孩出圈思路:根据用户输入,生成一个小孩出圈序列n=5,即有5个人k=1,从第一个数开始报数,m=2,数2下1.需要创建一个辅助指针helper原创 2020-05-10 11:42:36 · 191 阅读 · 0 评论 -
Java实现双向链表
单链表只可以有一个方向进行查找,而双向链表可以向前或者向后查找单向链表不可以自我删除,需要一个辅助节点,而双向链表可以实现自我删除遍历:双向链表的遍历思路和单链表的思路是一样的,只是可以向前,也可以向后添加:(默认添加到双向链表的最后)先找到双向链表最后的这个节点;temp.next = 新节点;新节点.pre = temp;修改:修改思路和双向链表是一样的删除:因为是双链表,所以可以自我删除某个节点。找到要删除的那个节点,temp;temp.pre.next = temp.nex原创 2020-05-10 10:41:39 · 587 阅读 · 0 评论 -
JAVA数据结构之单链表实现创建,增加,删除,插入,修改,打印操作
链表是以节点的方式来存储,是链式存储每个节点包含data域,next域,指向下一个节点如图,发现链表的各个节点不一定是连续存储链表分带头节点和不带头节点链表,根据实际的需求来确定链表主要的操作就是增删查改,还有逆序输出。添加(创建)1.先创建一个head头节点,作用就是表示单链表的头2.后面我们每添加一个节点,就直接加到链表最后遍历:通过一个辅助变量,帮助遍历整个链表 publ...原创 2020-03-29 13:41:00 · 1039 阅读 · 0 评论 -
JAVA数据结构之使用数组进行循环队列的实现
前面的博客实现了普通的队列,但是不可以重用,然后现在就要用循环队列来解决它的问题。普通队列的地址:普通队列数组模拟环形队列1.front变量的含义做一个调整:front指向队列的第一个元素,也就是front初始值为02.rear变量的含义做一个调整,rear指向队列的最后一个元素的后一个位置,可以空出一个空间作为约定,rear初始值为03.当队列满时,条件是(rear+1)%maxsiz...原创 2020-03-29 13:26:45 · 242 阅读 · 1 评论 -
JAVA数据结构之使用数组实现队列
队列是一个有序列表,它可以用数组或者是链表来实现遵循先进先出的原则。先存入的数据要先取出,后存入的要后取出数组模拟队列队列本身是有序队列,所以使用数组来实现队列的输入和输出是有前后端来处理,因此需要两个变量front及rear分别记录队列前后端的下标,front会根据队列的输出而改变,rear会根据队列的输入而改变。往队列中插入数据将尾指针rear后移,但是前提是rear小于队列的最大...原创 2020-03-29 13:20:21 · 330 阅读 · 0 评论 -
Java数据结构实现稀疏数组
首先什么是稀疏数组呢?当一个数据大部分为0或者大部分都为1时,可以用另外一个数组来保存它,节约空间。先用图片表示将二维数组转化为稀疏数组的思路:1.遍历原始的二维数组,得到有效数据的个数sum2.根据sum就可以创建稀疏数组 sparseArr int[sum+1][3]3.将二维数组的有效数据存入到稀疏数组中稀疏数组转化为二维数组的思路:1.先读取稀疏数组的第一行,根据第一行的...原创 2020-03-29 13:12:36 · 147 阅读 · 1 评论 -
C/C++实现链表的操作,可以从文件中存取数据
链表的操作很容易理解,直接上代码#include #include <stdio.h>#include <stdlib.h>#include #define NULL 0using namespace std;struct Book {int id;char name[20];char author[20];char publish[20];floa...原创 2019-07-01 16:19:50 · 3545 阅读 · 0 评论 -
C/C++用栈实现计算器
使用栈实现计算器,最主要的就是进行运算符的优先级判断,然后进行对应的计算,然后将其压入栈和从栈中取出来。其中要对输入的表达式进行判断,如果表达式不符合的话就直接不用计算。下面直接上代码#include #include <stdlib.h>#include <stdio.h>using namespace std;const int MaxSize = 20;...原创 2019-07-01 16:16:39 · 2627 阅读 · 1 评论 -
C/C++实现串的操作,使用kmp算法来求子串,实现串的赋值,串的相加,串的比较,删除字符串,置换字符串,求串的长度
使用kmp算法来在母串中找到子串,这里面最重要的就是求next值然后通过next数组来求出nextvall值求next值: 一个字符串开始的第一个的next值都是为0,然后第二个值都为1,然后通过字符串的第二个字符和它的下标所值得字符进行比较,如果相同得话就将第二个字符得next值加1,如果不同得话就继续通过next值往前回溯。就这样一直往下执行,一直到最后一个字符。例如abaabcac...原创 2019-07-01 15:37:36 · 656 阅读 · 0 评论 -
C/C++实现二叉树的生成,遍历,求深度,叶子节点数
二叉树就是最多只有两个子节点,二叉树的创建可以通过递归方法来实现二叉树的遍历方法有三种:先根遍历,中根遍历,后根遍历先根遍历:就是先访问根节点,然后访问左子树,又访问右子树中跟遍历:先访问左子树,再访问根节点,最后访问右子树后根遍历:先访问左子树,再访问右子树,最后访问根实现这三个遍历最好的方法就是使用递归方法,但是也可以使用栈来实现。上代码#include #include &l...原创 2019-07-01 15:01:49 · 1689 阅读 · 0 评论 -
C/C++实现哈夫曼树和生成哈夫曼编码
用C语言实现哈夫曼树和生成哈夫曼编码,首先生成哈夫曼树,哈夫曼树是从中选取权值最小的两个进行相加,将这两个分别做为生成的左子树和右子树,左子树要比右子树小。然后将相加得到的值从新放入,然后又从中找到最小的两个值,然后用这个两个值一直相加,直到只剩最后一个值,将这个值作为哈夫曼树的根。生成哈夫曼编码,如果是左子树的话为0,右子树的话为1,从父节点还是往下找。然后这串代码就是哈夫曼编码。上代码#...原创 2019-07-01 14:52:39 · 3081 阅读 · 0 评论 -
C++/C使用数据结构实现多项式的相加相减求导和正序输出逆序输出(可以保存到文件和从文件读取)
**数据结构实现多项式的一些操作时,使用链表来实现,直接上代码。**代码里面有备注#include #include <stdio.h>#include <stdlib.h>using namespace std;//多项式的一项结构体struct Node{int index;//一元多项式的指数int coefficient;//一元多项式的系数...原创 2019-07-01 14:38:59 · 798 阅读 · 1 评论