栈是最基本的数据结构之一,其特点是先进后出

1.基于数组的可动态调节大小的栈

public class ResizingArrayStack<Item>
{
private Item[] a;
private int N; public ResizingArrayStack(int cap)
{
a = (Item[]) new Object[cap];
} private void resize(int max)
{ // 将栈移动到一个大小为max的新数组
Item[] temp = (Item[]) new Object[max];
for (int i = 0; i < N; i++)
{
temp[i] = a[i];
}
a = temp;
} public boolean isEmpty()
{
return N == 0;
} public int size()
{
return N;
} public void push(Item item)
{ // 将元素添加到栈顶
if (N == a.length)
{
resize(2 * a.length);
}
a[N++] = item;
} public String pop()
{ // 从栈顶删除元素
String item = (String) a[--N];
a[N] = null;// 避免对象游离
if (N > 0 && N == a.length / 4)
{
resize(a.length / 2);
}
return item;
}
}

2.基于链表的栈

public class LinkedListStack<Item>
{
private Node first; //栈顶
private int N; //元素数量 private class Node
{ //定义了结点的嵌套类
Item item;
Node next;
} public boolean isEmpty()
{
return first==null; //或者N==0
} public int size()
{
return N;
} public void push(Item item)
{ //向栈顶添加元素
Node oldfirst=first;
first=new Node();
first.item=item;
first.next=oldfirst;
N++;
} public Item pop()
{ //从栈顶删除元素
Item item=first.item;
first=first.next;
N--;
return item;
}
}

栈(Java实现)的更多相关文章

  1. 两个栈实现队列+两个队列实现栈----java

                                               两个栈实现队列+两个队列实现栈----java 一.两个栈实现一个队列 思路:所有元素进stack1,然后所有出s ...

  2. Java虚拟机栈(java stack)

    虚拟机栈(java stack) 百度图片搜索里的动图搜索功能不错,可以搜索一些动图,展示操作数栈的操作过程,比较形象.这点google差点意思 虚拟机栈(jvm stacks)是线程独占的 里面是多 ...

  3. 栈-java代码

    import java.util.Arrays; public class StackDemo { private int maxSize; private long[] stackArray; pr ...

  4. 剑指Offer:面试题21——包含min函数的栈(java实现)

    问题描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min,push及pop的时间复杂度都是O(1). 思路:加入一个辅助栈用来存储最小值集合 (这里要注 ...

  5. 实现O(1)获取最大最小值的栈----java

    原文:http://blog.csdn.net/sheepmu/article/details/38459165 实现O(1)获取最大最小值的栈和队列----java 一.如何实现包含获取最小值函数的 ...

  6. java 线程栈 & java.lang.StackOverflowError

    网上搜索了一下,关于java的线程栈: JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K. JVM的内存,被划分了很多的区域: (来源:http://www.iteye.com/ ...

  7. 栈java实现

    这几天,过得挺充实的,每天都在不停的上课,早上很早就起来去跑步,晚上到图书馆看书.一边紧张的学习,一边在默默的备战软考.最近还接手了一个公司官网的建设.这是我在川信最后的一个完整学期了,每件事我都要认 ...

  8. 一款基于SSM框架技术的全栈Java web项目(已部署可直接体验)

    概述 此项目基于SSM框架技术的Java Web项目,是全栈项目,涉及前端.后端.插件.上线部署等各个板块,项目所有的代码都是自己编码所得,每一步.部分都有清晰的注释,完全不用担心代码混乱,可以轻松. ...

  9. 20.包含min函数的栈 Java

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 思路 借助辅助栈实现: 压栈时:若辅助栈为空,则将节点压入辅助栈.否则,当当前节点小于 ...

  10. 火车进出栈 java

    题目描述 一列火车n节车厢,依次编号为1,2,3,…,n.每节车厢有两种运动方式,进栈与出栈,问n节车厢出栈的可能排列方式有多少种. 输入 一个数,n(n<=60000) 输出 一个数s表示n节 ...

随机推荐

  1. hdu 1506 最大子矩阵面积

    //写动态规划的题目 要把主要问题提炼出来 这里的问题就是求area=(j-k+1)*a[i]  如果找到j k是解决这个题目的关键 这里暴力求肯定是要超时的 这里用dp来优化 #include< ...

  2. caffe prototxt分析

    测试用prototxt name: "CIFAR10_quick"layer { name: "data" type: "MemoryData&quo ...

  3. CAFFE(一):Ubuntu 下安装CUDA(安装:NVIDIA-384+CUDA9.0+cuDNN7.1)

    (安装:NVIDIA-384+CUDA9.0+cuDNN7.1) 显卡(GPU)驱动:NVIDIA-384 CUDA:CUDA9.0 cuDNN:cuDNN7.1 Ubuntu 下安装CUDA需要装N ...

  4. GOLANG文件拷贝

    GOLANG文件拷贝 在Golang中,使用系统自带函数io.Copy() 如: srcFile := "C:/Users/Wisdom/Desktop/Wisdompic.png" ...

  5. 蓝桥杯入门——1.Fibonacci数列

    问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n ...

  6. java 中操作字符串都有哪些类?(未完成)它们之间有什么区别?(未完成)

    java 中操作字符串都有哪些类?(未完成)它们之间有什么区别?(未完成)

  7. 一图一知-NPM&YARN常用命令

  8. git 忽略部分文件

    忽略:  git update-index --assume-unchanged .mymetadata    取消忽略: git update-index --no-assume-unchanged

  9. 误删rpm命令的恢复方法

    rpm命令不能用了,被依赖的yum也不能使用了, 恢复rpm命令无外乎重装, 重装方法1: 使用源码编译,  需要gcc ,cmake包,如果没装,悲剧了 重装方法2: 找一台,和出问题的这台同样系统 ...

  10. 题解 noip2019模拟赛Day1T3

    题面 运河计划 问题描述 水运在人类的交通运输史中一直扮演着重要的角色.借助河流.的便利,人们得以把大量的货物输送到天南海北不仅仅是自然界现成的河流,人工开凿的运河(如苏伊士运河.巴拿马运河.我国的京 ...