数据结构与算法
嗷嗷嗷
zhangxl-jc
这个作者很懒,什么都没留下…
展开
-
Java实现朴素的模式匹配法
package com.myTest.string;public class StringTest { public static void main(String[] args) { String mainStr="1googleggle"; String subStr="google"; System.out.println(compareMatch(mainStr,subStr,1)); } public static int compar...原创 2020-06-08 19:52:06 · 290 阅读 · 0 评论 -
Java实现循环队列(顺序存储结构)
队列满的条件是 (nextIndex+1)%capacity==firstIndex;队列为空的条件是firIndex==nextIndex;数组总是会空一个元素以满足上面两个条件;好处是提取元素和追加元素的复杂度都是O(1);package com.myTest.queue;import java.util.concurrent.locks.ReentrantLock;public class CurrentArrayQueue<E> { public stat.原创 2020-06-08 15:51:47 · 332 阅读 · 0 评论 -
双向链表(Java)-ADD,GET,REMOVE
package com.sobot.stack;import java.util.LinkedList;/** * Java实现双向链表结构,add,get,remove, !mod * @param <E> */public class TwoWayLinkList<E extends Object> { public static void main(String[] args) { LinkedList<String> .原创 2020-06-04 19:09:46 · 317 阅读 · 0 评论 -
栈的递归应用-Java实现斐波那契数列
一个直接调用自己或通过一系列的调用语句见解的调用自己的函数,称作递归函数;每个递归函数都具有基线条件和递归条件。基线条件是为了防止陷入永不结束的无穷递归。 迭代和递归的区别是:迭代使用的是循环结构,递归使用的是选择结构。递归能使程序的结构更清晰、更简洁、更容易理解,迭代可能使程序的性能更好。但是大量的递归调用会建立函数的副本,会耗费大量的时间和内存,甚至引起栈内存溢出。迭代不需要反复调用函数和占用额外的内存空间。 如果栈很高,可以考虑使用循环或者尾递归。...原创 2020-06-04 15:49:17 · 360 阅读 · 0 评论 -
单链表实现栈的链式存储结构
package com.myTest.stack;/** * 单链表实现栈的链式存储结构 * * @param <T> */public class LinkStack<T> { public static void main(String[] args) { LinkStack<Integer> linkStack = new LinkStack<>(); linkStack.push(1); .原创 2020-06-03 20:24:06 · 477 阅读 · 0 评论 -
Java实现两栈共享空间
如果我们有两个相同类型的栈,我们它们各自开辟了数组空间,极有可能第一个栈已经满了,再进栈就溢出了,而另一个栈还有很多存储空间空闲,我们完全可以用一个数组来存储两个栈。————引自大话数据结构第四章4.5 两栈共享空间package com.myTest.stack;/** * java实现两栈共享存储空间 * */public class SharedStack<T> implements java.io.Serializable { public stati...原创 2020-06-03 17:16:08 · 1484 阅读 · 0 评论