数据结构
qiuxinfa123
这个作者很懒,什么都没留下…
展开
-
Java实现最小堆
堆,其实是一种优先队列,分为最大堆和最小堆。在最小堆中,它首先是一颗完全二叉树,并且根节点的值,要比左右孩子的值都要小,同时,左右子树也是最小堆。本文包含堆的操作如下:(1)插入一个节点(2)删除堆顶元素,也就是删除最小值(3)通过给定的一组数据,构建最小堆由于用数组表示完全二叉树十分方便,所以本文采用的是数组存储数据。1.准备 private int[] data; // 利用数组和完全二叉树的性质,存储数据 private int ...原创 2020-08-01 17:01:37 · 3537 阅读 · 0 评论 -
Java实现单链表操作
之前学习数据结构,都是用C语言来实现的,最近打算用Java实现一下,加深理解。先看节点的定义: // 节点结构 class Node { int data; // 数据域 Node next; // 指针域 public Node(int data){ this(data,null); } public Node(int data,Node next){原创 2020-07-09 16:50:51 · 245 阅读 · 0 评论 -
两个队列模拟栈(java版)
用两个队列实现一个栈的功能入栈:将元素进队列1出栈:判断队列1红元素的个数是否为1,如果等于1,则出队列,否则将队列1中的元素,以此出队列并放入队列2,直到队列1中的元素留下一个,然后队列1出队列,再把,队列2中的元素出队列以此放入队列1中。简单点的说,就是通过队列2作为缓冲,每次取出队尾的元素。代码如下:package test.queue;import java.util....原创 2018-12-06 19:57:01 · 598 阅读 · 0 评论 -
两个栈模拟队列(java版)
栈是一种后进先出的线性表,而队列是先进先出的线性表,通过一个栈可以实现一次反序,所以通过两个栈可以实现顺序存取。思路如下:假设两个栈分别为s1,s2。对s1进行入队,出队时,先推断s2是否为空,如果s2不为空,则直接弹出s2最上面的元素。如果s2为空,则将s1的所有元素出栈放入s2中。实现代码如下:package test.stack;//用两个栈模拟队列:栈可以起到反序的作用,两个栈便...原创 2018-12-06 19:18:43 · 770 阅读 · 0 评论 -
队列的实现(java版)
队列(Queue)是限定只能在一端插入、另一端删除的线性表。允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear),没有元素的队列称为“空队列”。队列具有先进先出(FIFO)的特性。下面将介绍队列的两种实现方式:基于数组和基于链表的,其中数组使用的是循环队列的思想,如下图(图片来源于网络,如有侵权,请联系我,谢谢),有一个位置是不存储数据的,这样就能比较简单的区别队列满...原创 2018-11-24 12:54:02 · 173 阅读 · 0 评论 -
栈的实现(java版)
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom)...原创 2018-11-24 11:08:02 · 129 阅读 · 0 评论 -
按层次顺序创建和遍历二叉树
第一篇博客,献给了数据结构--二叉树。最近在学数据结构,总结一下二叉树的按层次创建的方法,希望对此时的你有所帮助~有错误的地方,还望大神指出,或者有其他更好的方法,欢迎留言~/*利用顺序队列,层次建立二叉树*/#include <iostream>using namespace std;#define MAXSIZE 100 struct tnode //树的数据结构...原创 2018-05-14 20:16:24 · 15151 阅读 · 1 评论