![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
The_Best_Hacker
天不生我李淳罡,剑道万古如长夜。
展开
-
数组实现队列【一】
【一】思路队列的思想为-----先进先出初始化:定义头指针尾指针,队列最大长度,头指针指向队列第一个数据的前一个位置;尾指针指向最后一个元素,默认值都为-1; 判断队列是否为空,当尾指针与头指针相等时,队列为空; 判断队列是否已满,当尾指针与队列最大长度-1相等,队列已满; 添加数据:当添加元素的时候,需要从队列尾部添加,所以尾指针向后加一; 取出数据:当取出元素的时候,需要从队列...原创 2019-09-04 18:27:53 · 190 阅读 · 0 评论 -
二叉树:定义、遍历、查询、删除
【一】二叉树二叉树的相关概念满二叉树:如果二叉树的yezi节点都在最后一层,并且节点总数=2^n-1,n为层数完全二叉树:如果二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子节点在左边连续,倒数第二层的叶子节点在右边连续。【二】为什么提出二叉树数组 优点:通过下标形式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。 缺点:如果检...原创 2019-09-15 16:14:56 · 273 阅读 · 1 评论 -
哈希表
【一】哈希表他通过把关键码值映射到表中的一个位置来访问记录,以加快查找的速度。这个映射函数就是散列函数。【二】哈希表的价值相当于一个缓存区,将常用的加入哈希表,减少对数据库的操作。【三】自己写的哈希表import java.util.Scanner;public class HashTableTest { //4.测试 public static vo...原创 2019-09-13 20:41:52 · 204 阅读 · 0 评论 -
浅谈:时间复杂度、空间复杂度
【时间复杂度】1.时间频度(语句频度):一个算法中的语句执行的次数。记为T(n) 时间频度的计算特点: 忽略常数项 忽略低次项 忽略系数2.时间复杂度若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常熟,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)...原创 2019-09-13 12:15:28 · 436 阅读 · 0 评论 -
浅谈---栈的前缀、中缀、后缀表达式
【前缀表达式】前缀表达式(波兰表达式):运算符位于操作数之前;eg:(3+4)*5-6 - * + 3 4 5 61.从右至左扫描,将6,5,4,3压入堆栈;2.遇到+运算符,因此弹出3和4,计算3+4的值,得7,再将7入栈;3.接下来是*运算符,因此弹出7和5,计算7*5=35,将35入栈;4.最后是-运算符,计算35-6的值,即29,由此得到结果。【中缀表达式】中缀表达式...原创 2019-09-13 10:26:07 · 539 阅读 · 0 评论 -
栈实现简易计算功能
【一】栈实现计算功能思想1.首先定义两个栈,数据栈numStack、符号栈operStack2.如果扫描到的是一个数字就存入numStack中3.如果扫描到的是一个符号如果符号栈为空,直接加入符号; 如果操作的符号优先级小于等于符号栈中的符号,从符号栈中pop出一个符号,再从数据栈中pop出两个数据,进行运算并将运算结果存入数据栈中; 如果操作的符号优先级大于栈中的符号,直接存储...原创 2019-09-12 18:30:11 · 235 阅读 · 0 评论 -
Stack(栈)
【一】Stack(栈)特点:它是一个先进后出的有序列表 允许插入和删除的一端为栈顶(top),另一端为栈底(bottom) 出栈pop,入栈push数组模拟栈1.判断栈是否为空2.判断栈是否已满3.入栈4.出栈【二】代码实现import java.util.Scanner;public class StactTest2 { public static...原创 2019-09-12 01:18:41 · 288 阅读 · 0 评论 -
环形单链表
【一】环形单链表单项环形链表解决约瑟夫环1.定义节点2.创建环形链表3.遍历环形链表4.环形链表添加节点【二】环形单链表的图示【三】代码实现public class LinkedListDemo { public static void main(String[] args) { CirLinkedList cll=new CirLinkedList();...原创 2019-09-11 21:25:53 · 346 阅读 · 0 评论 -
双向链表
【一】双向链表单向链表,查找的只能是一个方向,而双向链表可以向前或向后查找。单向链表不能自我删除,需要靠辅助节点;而双向链表可以自我删除双向链表中的节点pre data nextpre指向前一个节点的地址data存储当前节点的数据next指向下一个节点的地址【二】代码实现实现功能:1.遍历双向链表 双向链表的遍历和单链表一样,只是可以向前查找,向后查找。...原创 2019-09-06 13:22:58 · 183 阅读 · 0 评论 -
单链表
【一】单链表特点1.存储方式为:节点,节点包含data域和next域,data域用于存储数据,next域用于存储下一个节点对应的地址。2.链表的各个节点不一定是连续存储的。3.链表分为带头结点的链表和没有头结点的链表。【二】单链表的功能实现功能列表:1.添加节点2.插入节点3.修改节点4.删除节点5.遍历元素6.返回倒数第K个节点获取到单链表中的节点个数,不统计...原创 2019-09-05 11:01:06 · 232 阅读 · 0 评论 -
数组实现队列【二】
【一】实现思路基于上一篇文档数组实现队列【一】加以改进,将浪费掉的空间用起来。改进:front头指针和rear尾指针的默认值为0,头指针指向头元素,尾指针指向尾元素的下一个位置; 将数组最大长度的最后一个位置queue[maxSize-1]预留出来; 判断队列为空的条件:rear==front; 判断队列已满的条件:(rear+1)%maxSize==front; 队列的有效个...原创 2019-09-04 23:12:06 · 138 阅读 · 0 评论 -
顺序存储二叉树前序、中序、后序
【一】顺序存储二叉树数组存储方式和树的存储方式可以相互转换。要求:1)二叉树的节点,要求以数组的方式来存放2)要求在遍历数组时,仍然可以以前序遍历、中序遍历和后序遍历的方式来完成节点的遍历。特点:顺序二叉树通常只考虑完全二叉树 第n个元素的左子树的下标为2*n+1; 第n个元素的右子树的下标为2*n+2; 第n个元素的父节点为(n-1)/2n:表示二叉树中的第几个元...原创 2019-09-15 23:25:32 · 927 阅读 · 2 评论