- 博客(15)
- 收藏
- 关注
转载 栈队列例题3:使用两个栈实现一个队列
思路: 使用两栈实现一个队列,stack1栈是用来push的,当要pop时,需要先把stack1栈的数据pop出来,用stack2栈push接收,这样就实现了反转,然后再将stack2栈中pop一下,就实现了犹如队列的出队操作。进行入栈时,再把stack2中的数据pop出来,用stack1栈push接收,然后stack1再push一下新进来的元素即可; 代码如下:...
2019-01-04 15:29:00 147
转载 栈队列例题2:SetOfStack放盘子
代码如下: 1 import java.util.ArrayList; 2 import java.util.Scanner; 3 4 public class SetOfStack { 5 6 public static void main(String[] args) { 7 Scanner sc=ne...
2019-01-04 14:32:00 165
转载 栈队列例题1:设置带最小值的栈
思路: 设置一个A栈类,在A栈类中在声名另一个B栈类的对象,这个对象主要用于存储最小值的,每次当用A栈类的对象压入元素时同时也对B栈类的对象中的上一个比较后,也进行压入。A栈类的对象弹栈时,B栈类的对象也同时弹栈。这样A栈类中的min方法里只需要对B栈类的对象.peek( )就行了。代码如下: 1.接口 1 public interface IStack...
2019-01-04 13:50:00 120
转载 链表例题6:检查链表中的数据是否回文
首先需要用到快慢指针的思想,中间需要栈的一些帮助就可以完成此题。 创建一个快慢指针分别为:fast,slow;开始时他们都指向链表的第一个数据结点,使用一个while循环快指针指向为null时结束,设置快指针一次两步,慢指针一次一步,这样当快指针指向为null时,慢指针指向的这个链表的中心地带,但是这时要注意这个回文的数据个数是为奇还是为偶的问题(因为如果为偶的话则慢指针刚好指...
2019-01-02 15:20:00 110
转载 队列的实现
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列的特性:先进先出;以下代码是用链表实现的队列:1.队列的接口 1 public interface IQueue<T> { ...
2019-01-01 20:37:00 78
转载 栈的实现
栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。栈的特性:后进先出栈主要分为两类:静态栈动态栈【静态栈】静态栈的核心是数组,类似于一个连续内存的数组,我们只能操作其栈顶元素。【动态栈】动态栈的核心是链表,在内存中可以不连续,我们只能操作其栈顶结点。以下代码是用链表实现的动态栈:1.双向链表类 1 ...
2019-01-01 20:12:00 89
转载 链表例题5:查找出有环链表的环起点
主要的方法是使用快慢指针来解决,然后让快慢指针同时向前进(让慢指针一次移动一步,快指针一次移动两步),当慢指针移动k下时指向了环路的开头,此时快指针已经在环路中移动了k下了,设环路有L个结点这么长,那么快指针与慢指针相距为L-k的路径长度。因为都已经进入了环路内,现在就是快指针追慢指针了,慢指针一次移动一步,快指针一次移动两步, 通过计算,当移动L-k次后,两指针相遇了,同时两指...
2019-01-01 19:25:00 99
转载 链表4:链表的加法
解题思路:1.创建一个结点类2.创建一个加法方法,一个输出方法3.加法方法和输出方法均使用递归的方式此题一共需要三个链表:两个用来存储两组数值,一个用存储它们两个相加的结果(注意进位)对9237与8624,这两组数进行试验代码如下: 1 //结点类 2 class Node{ 3 int data; 4 Node n...
2018-12-31 20:12:00 156
转载 链表例题3:用基准值将链表分区
解题思路:1.创建一个结点类。2.创建一个分割方法。3.声明四个结点分别存储小于基准值,大于或等于基准值(注意这里是声明结点,不是实例化结点,所以不算违规)。四个声明的结点为(定义四个结点是为了最后好进行链接在一起):1.LHead,LTail用来存储小于基准值的。2.RHead,RTail用来存储大于或等于基准值的。假如链表如图:...
2018-12-31 19:27:00 148
转载 链表例题2:链表的倒数第k个节点是多少
解题思想:1.创建一个结点类(为后面实现链表做基础)2.创建一个查询倒数元素的方法3.使用快慢指针的思想(主要的部分)图中的表示的是查询倒数第k个结点的操作: 创建一个快慢指针后pre(慢指针)指向的第一个结点,在通过k的具体数值来移动p1(快指针),让它们之间包含k个结点(包括它们自身),然后不断的将p1和pre向后移动,直到p1移动到最后一个...
2018-12-31 15:49:00 98
转载 链表例题1:删除链表中的重复结点
解题思路:1.创建一个结点类2.创建一个删除方法3.使用快慢指针的思想(主要的部分)代码如下: 1 public class RemoveRepeation { 2 3 public static void main(String[] args) { 4 int data[]= {1,1,1,1,1,2,2,2,...
2018-12-31 14:34:00 139
转载 桶排序(BucketSort)
桶排序:工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(可能在使用别的排序算法,我这里用的单向链表在放入时就排好了顺序),最后依次把各个桶中的记录列出来得到有序序列。分布均匀的一组数,用桶排序效率很高。 1.桶的个数是用这组数的个数确定的 2.每个数值入桶的位置(桶的下标),是由(数值*数组长度/(最大数值+1))这个确定的。 桶排序(Bucke...
2018-12-26 15:43:00 148
转载 双向链表的实现
链表一般有单向链表,双向链表和双向循环链表三种 双向链表的每一个结点有着三个主要部分:1,存储数据的数据域 2,存储前指针的指针域 3,存储后指针的指针域 1.MyList接口定义功能 1 public interface MyList<T>{ 2 //新增一个元素 3 void ad...
2018-12-26 13:30:00 94
转载 单向链表的实现
单链表结构:物理存储结构上不连续,逻辑上连续,大小不固定。 单链表主要是以一个个节点组成,结点中又包含了两个域:1.存储数据的数据域 2.存储指针的指针域(java是以一个变量存储下一个结点的内存地址) 单链表插入操作: s.next=p.next; p.next=s;(注意插入的顺序) 单链表的删除操作: ....-----&g...
2018-12-25 18:25:00 76
转载 基于数组实现线性表
数组是一组内存地址连续的存储单元,所以用数组实现的线性表是顺序存储的。可以通过数组下标轻易的访问不同位置的数据,但要注意下标越界的异常(ArrayIndexOutOfBoundsException) 用数组实现的线性表,查询与更改方法有着优势。(因为有下标) 1.MyList接口定义功能public interface MyList { //新增一个元素...
2018-12-25 17:16:00 196
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人