java栈方法_java栈的两种实现方法[通俗易懂]

java栈方法_java栈的两种实现方法[通俗易懂]java栈的实现有两种方式:一.使用数组来实现://使用数组实现栈,功能包括进行内存扩展publicclassStack{privateint[]data;privateintlength;//表示初始化栈的内存长度privateinttop;//用来表示栈的实际长度privatefinalintexpandLength=20;//表示扩展的长度publicStack(i…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

java栈的实现有两种方式:

一.使用数组来实现://使用数组实现栈,功能包括进行内存扩展

public class Stack {

private int []data;

private int length;//表示初始化栈的内存长度

private int top;//用来表示栈的实际长度

private final int expandLength=20;//表示扩展的长度

public Stack(int length){

this.length=length;

top=-1;//初始化为-1

data=new int[length];

}

//压栈

public void push(int value){

if(top

data[++top]=value;

else{

//进行内存扩展

int []temp=new int[length+expandLength];

for(int i=0;i

temp[i]=data[i];

}

data=temp;

data[++top]=value;

}

}

//出栈

public int pop(){

return data[top–];

}

//返回栈头元素

public int peek(){

return data[top];

}

//返回栈的长度

public int getLength(){

return top+1;

}

//判断是否为满

public boolean isfull(){

return(top==length-1);

}

}

二.使用数组线性表来实现栈://使用线性表实现栈的存储,这样不需要考虑内存扩展的情况

import java.util.*;

public class linkedStack {

private LinkedList Linkedlist;//定义一个线性表

public linkedStack(){

Linkedlist=new LinkedList();

}

//压栈

public void push(T value){

Linkedlist.add(value);

}

//出栈

public T pop(){

T data=Linkedlist.get(getLength()-1);

Linkedlist.remove(getLength()-1);

return data;

}

//得到栈头元素

public T peek(){

return Linkedlist.get(Linkedlist.size()-1);

}

//栈的长度

public int getLength(){

return Linkedlist.size();

}

}

就我个人而言,我更喜欢第二种实现方法,第二种可以自己定义所要存储的数据类型,有人会说为啥第一种方法不用泛型,我有试过,但是会非常麻烦。首先泛型对数组的定义本来就要限制,所以综合考虑,本人就在第一种方法中简化了,定义数据类型为int类型.如果大家有更好的方法,希望能提出,相互提高,这里仅仅表明我个人的想法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196828.html原文链接:https://javaforall.net

(0)
上一篇 2025年9月19日 上午11:43
下一篇 2025年9月19日 下午12:15


相关推荐

  • c语言飞机订票系统设计,飞机订票系统设计「建议收藏」

    c语言飞机订票系统设计,飞机订票系统设计「建议收藏」该楼层疑似违规已被系统折叠隐藏此楼查看此楼u=find_num_hlink_list(save,book_flight_num);strcpy(ticket_x1.flight_num,u->info.flight_num);strcpy(ticket_x1.start_add,u->info.start_add);strcpy(ticket_x1.end_add,u->inf…

    2022年6月16日
    28
  • Android数据库加密

    Android数据库加密Android数据库加密一、简介SQLite是一个轻量的、跨平台的、开源的数据库引擎,它的读写效率、资源消耗总量、延迟时间和整体简单性上具有的优越性,使其成为移动平台数据库的最佳解决方案(如Android、iOS)。Android系统内置了SQLite数据库,并且提供了一整套的API用于对数据库进行增删改查操作,具体就不详细说明了。然而,Android平台自带的SQLite有一个致命的缺陷:…

    2022年5月13日
    45
  • 极限思想之芝诺悖论[通俗易懂]

    极限思想之芝诺悖论[通俗易懂]芝诺悖论是古希腊哲学家芝诺提出的一组悖论。芝诺是一个很有学问,同时也很好玩的人(淘气)。他如果在中国出生,估计很难大学毕业,只能跟池子(脱口秀演员~)一样,高中教室门外面站三年课,然后去讲脱口秀糊口。阿基里斯,大家都知道。古希腊神话中的战神。无论是力量,速度,耐力,格斗技巧,都是巅峰级别的。一夜睡三女,第二天依然可以血染特洛伊的男人。芝诺就提出:在跑步比赛中,如果跑得最慢的乌龟一开始领先…

    2022年6月18日
    39
  • 新生代民工 书籍推荐

    新生代民工 书籍推荐类别书名网址价格 元 当当 价格 元 京东 网络协议图解 HTTPhttp product dangdang com 29236370 html59 8PythonPytho

    2026年3月26日
    2
  • 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈「建议收藏」

    微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈「建议收藏」微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈导语:微信分享在手机右上角的三个点一键分享就ok了,那么对于分享到朋友圈,分享给朋友是怎么实现的呢?对于那种活动分享送流量是怎么定位分享者的呢?而想要将文章发送给朋友又是怎么获取到的朋友列表的呢?微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。JSSDK使用步骤1、绑定域

    2022年5月13日
    40
  • lamda 表达式「建议收藏」

    lamda 表达式「建议收藏」Lamda表达式高阶语言中的lamda表达式,灵感来自于lamda演算。lamda演算包括一条变换规则(变量替换)和一条函数定义方式,通过带入和替换,对输入产生输出。Connect新用法connect连接信号槽connect(sender,&Sender::valueChanged,receiver,&Rece…

    2022年5月27日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号