摘要: 思路: 使用两栈实现一个队列,stack1栈是用来push的,当要pop时,需要先把stack1栈的数据pop出来,用stack2栈push接收,这样就实现了反转,然后再将stack2栈中pop一下,就实现了犹如队列的出队操作。进行入栈时,再把stack2中的数据pop出来,用stack1栈push 阅读全文
posted @ 2019-01-04 15:29 Spider&Man 阅读(459) 评论(0) 推荐(0) 编辑
摘要: 代码如下: 阅读全文
posted @ 2019-01-04 14:32 Spider&Man 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 思路: 设置一个A栈类,在A栈类中在声名另一个B栈类的对象,这个对象主要用于存储最小值的,每次当用A栈类的对象压入元素时同时也对B栈类的对象中的上一个比较后,也进行压入。A栈类的对象弹栈时,B栈类的对象也同时弹栈。这样A栈类中的min方法里只需要对B栈类的对象.peek( )就行了。 代码如下: 1 阅读全文
posted @ 2019-01-04 13:50 Spider&Man 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 首先需要用到快慢指针的思想,中间需要栈的一些帮助就可以完成此题。 创建一个快慢指针分别为:fast,slow;开始时他们都指向链表的第一个数据结点,使用一个while循环快指针指向为null时结束,设置快指针一次两步,慢指针一次一步,这样当快指针指向为null时,慢指针指向的这个链表的中心地带,但是 阅读全文
posted @ 2019-01-02 15:20 Spider&Man 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 队列的特性:先进先出; 以下代码是用链表实现的队列: 1.队列的接口 2.队列类 阅读全文
posted @ 2019-01-01 20:37 Spider&Man 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。栈的特性:后进先出 栈主要分为两类: 静态栈 动态栈 【静态栈】 静态栈的核心是数组,类似于一个连续内存的数组,我们只能操作其栈顶元素。 【动态栈】 动态栈的核心是链表,在内存中可以不连续,我们只能操作其栈顶结点。 以下代码 阅读全文
posted @ 2019-01-01 20:12 Spider&Man 阅读(1613) 评论(0) 推荐(0) 编辑
摘要: 主要的方法是使用快慢指针来解决,然后让快慢指针同时向前进(让慢指针一次移动一步,快指针一次移动两步),当慢指针移动k下时指向了环路的开头,此时快指针已经在环路中移动了k下了,设环路有L个结点这么长,那么快指针与慢指针相距为L-k的路径长度。因为都已经进入了环路内,现在就是快指针追慢指针了,慢指针一次 阅读全文
posted @ 2019-01-01 19:25 Spider&Man 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 解题思路: 1.创建一个结点类 2.创建一个加法方法,一个输出方法 3.加法方法和输出方法均使用递归的方式 此题一共需要三个链表:两个用来存储两组数值,一个用存储它们两个相加的结果(注意进位) 对9237与8624,这两组数进行试验 代码如下: 结果: 阅读全文
posted @ 2018-12-31 20:12 Spider&Man 阅读(704) 评论(0) 推荐(0) 编辑
摘要: 解题思路: 1.创建一个结点类。 2.创建一个分割方法。 3.声明四个结点分别存储小于基准值,大于或等于基准值(注意这里是声明结点,不是实例化结点,所以不算违规)。 四个声明的结点为(定义四个结点是为了最后好进行链接在一起): 1.LHead,LTail用来存储小于基准值的。 2.RHead,RTa 阅读全文
posted @ 2018-12-31 19:27 Spider&Man 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 解题思想: 1.创建一个结点类(为后面实现链表做基础) 2.创建一个查询倒数元素的方法 3.使用快慢指针的思想(主要的部分) 图中的表示的是查询倒数第k个结点的操作: 创建一个快慢指针后pre(慢指针)指向的第一个结点,在通过k的具体数值来移动p1(快指针),让它们之间包含k个结点(包括它们自身), 阅读全文
posted @ 2018-12-31 15:49 Spider&Man 阅读(126) 评论(0) 推荐(0) 编辑