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类型.如果大家有更好的方法,希望能提出,相互提高,这里仅仅表明我个人的想法。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • keil_lic.exe注册机使用

    keil_lic.exe注册机使用第一步:以管理员身份运行keil5第二步:打开File中的LicenseManagement第三步:复制CID第四步:选择对应的Target为ARM,粘贴CID,复制生成的注册码第五步:将注册码粘贴到这,就ok了百度云网盘:链接:https://pan.baidu.com/s/1OqQmbpIQvqtHv2TFAp7a_Q提取码:l3v6希望能帮到各位朋友…

  • ResNet 18 的结构解读「建议收藏」

    ResNet 18 的结构解读「建议收藏」现在很多网络结构都是一个命名+数字,比如(ResNet18),数字代表的是网络的深度,也就是说ResNet18网络就是18层的吗?其实这里的18指定的是带有权重的18层,包括卷积层和全连接层,不包括池化层和BN层。下面先贴出ResNet论文中给出的结构列表。对Pytorch中ResNet18网络的源码分析(这里),我画出了大致的网络结构图。可以看出,数字18=17个…

  • 嵌入式系统 ttylinux 9.1 发布「建议收藏」

    嵌入式系统 ttylinux 9.1 发布「建议收藏」ttylinux是一个只需要8M磁盘空间的小型GNU/Linux发行版。可适合在以太网、调制解调器、ISDN等设备上运行,最低要求是486SX以及12M内存该版本主要是修正了一些bug。下载地址:http://www.minimalinux.org/ttylinux/download.html转载于:https://www.cnblogs.com/top5/…

  • 安卓usb调试模式还是无法连接_android usb

    安卓usb调试模式还是无法连接_android usbAndroid系统的手机以及平板电脑占有巨大的市场份额,当使用USB数据线完成电脑端与安卓手机端数据传输时,需要将安卓手机开启USB调试模式。什么是USB调试?USB调试是一种模式,允许Android连接计算机以进行数据同步或刷新任何文件等。本教程详细介绍如何为各种品牌的Android设备和不同版本的Android操作系统启用USB调试。一如何在不同品牌的Android手机上启用USB调试由于A…

  • java outputstream转为inputstream(java传递流)

    本文转自 https://blog.csdn.net/lmy86263/article/details/60479350在Java中InputStream和String之间的转化十分普遍,本文主要是总结一下转换的各种方法,包括JDK原生提供的,还有一些外部依赖提供的。1、InputStream转化为String1.1JDK原生提供方法一:byte[]bytes=newbyt…

  • Fiddler抓取视频数据「建议收藏」

    准备工作:(1)、手机(安卓、ios都可以)/安卓模拟器,今天主要以安卓模拟器为主,操作过程一致。(2)、抓包工具:Fiddel下载地址:(https://www.telerik.com/download/fiddler)(3)、编程工具:pycharm(4)、安卓模拟器上安装抖音(逍遥安装模拟器)一、fiddler配置在tools中的options中,按照图中勾选后点击Actio…

发表回复

您的电子邮箱地址不会被公开。

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