
数据结构
步入飞花
学如逆水行舟,不进则退
展开
-
栈(Stack)
1.简介 栈是一种只允许在顶端进行插入或删除的线性表,也就是说先进后出 栈只允许从一端插入和删除数据。栈有两种存储方式,即线性存储和链接存储(链表)。栈的一个最重要的特征就是栈的插入和删除只能在栈顶进行,所以每次删除的元素都是最后进栈的元素,故栈也被称为后进先出(LIFO)表。每个栈都有一个栈顶指针,它初始值为-1,且总是指向最后一个入栈的元素,栈有两种处理方式,即进栈(push)和出栈(pop),因为在进栈只需要移动一个变量存储空间,所以它的时间复杂度为O(1),但是对于出栈分两种情况,栈未满时,时间复杂原创 2021-08-16 10:44:36 · 170 阅读 · 0 评论 -
队列(Queue)
1.简介 队列的特点是允许在队头删除队尾插入(先入先出)。 2.实现 通过数组实现队列 public class ArrayQueue<T> { private T data[]; private int size; private int tail; //初始化 public ArrayQueue(int size){ this.data = (T[])new Object[size]; this.size = size; tail = -1; } //入栈 当队原创 2021-08-16 10:11:13 · 90 阅读 · 0 评论 -
单链表(Node)
简介 链表由多个结点组成,每个结点由两部分组成: 本身的信息,称为“数据域”; 指向直接后继的指针,称为“指针域”。 通过指针域将多个链表连接起来。 实现 public class OneNode<T> { private Node headNode; private int size; // 初始化 public OneNode() { this.headNode = null; this.size = 0; } // 添加链表 public void原创 2021-08-16 09:57:56 · 1312 阅读 · 0 评论 -
Java中的堆和栈
JAVA在程序运行时,在内存中划分5片空间进行数据的存储。分别是: 寄存器。 本地方法区。 方法区。 栈。 堆。 java把内存分为两种,一种为堆内存,另一种为栈内存。基本类型和局部变量都是存储在栈内存中的,用完就被虚拟机回收。new对象和数组是放在堆内存中,用完之后靠垃圾回收机制不定期回收。 在下图中main主函数定义了x=1和在show函数中定义了y=2。该程序的执行步骤: main函数是主入口先执行,在栈内存中存储x变量,同时存值1。 调用show函数后执行,也是在栈内存开辟一个空间存储y变量,同原创 2021-08-15 23:55:37 · 223 阅读 · 0 评论 -
堆(Head)
简介 堆是一种特殊的数据结构,满足以下两个性质: 堆中结点的值总是小于或者大于父节点的值 堆总是一颗完全二叉树 堆是一颗完全二叉树,在这棵树中,所有的父节点都满足大于等于其子节点的堆叫大根堆,所有的父节点都小于子节点的叫小根堆 堆虽然是一棵树但是一般存值存在数组中,父节点和子节点的关系通常通过下标来确定 实现 思路:如下图所示,当编号从零开始的时候:左孩子:(i + 1) * 2 - 1 右孩子: (i - 1) * 2 父节点:(i - 1) / 2。本次创建的是小根堆。 public cla原创 2021-08-15 22:30:39 · 124 阅读 · 0 评论