4、链栈的实现(java代码)
1、链节点
public class Node<T> {
public T data;
public Node next;
}
2、实现代码
public class Stack<T> {
private static Node bottom; //栈底指针
private static Node top; //栈顶指针
private static Integer size; //栈当前大小
/**
* 初始化
*/
public void initStack() {
bottom = top = new Node();
top.next = bottom;
size = 0;
}
/**
* 是否空
*
* @return
*/
public static boolean isEmpty() {
if (top.next == bottom) {
return true;
}
return false;
}
/**
* 入栈
*
* @param element
*/
public void pushStack(T element) {
Node temp = new Node();
temp.data = element;
if (top.next == bottom)//第一次入栈操作
{
temp.next = bottom;
top.next = temp;
} else {
temp.next = top.next;
top.next = temp;
}
size++;
}
/**
* 出栈
*/
public void popStack() {
if (isEmpty()) {
System.out.println("栈中没有元素!");
} else {
System.out.println("出栈操作:" + top.next.data + " ");
top.next = top.next.next;
}
size--;
}
/**
* 元素个数
*
* @return :个数值
*/
public int sizeStack() {
return size;
}
/**
* 查看顶部值
*/
public static void getTop() {
System.out.println("顶部值:" + top.next.data);
}
/**
*
* 打印放入的元素
*/
public static void printStack() {
Node temp = top;
if (isEmpty()) {
System.out.println("栈中没有元素!");
} else {
for (int i = 0; i < size; i++) {
System.out.print(temp.next.data + " ");
temp = temp.next;
}
}
System.out.println();
}
public static void main(String[] args) {
Stack<Integer> integerStack = new Stack<>();
integerStack.initStack();
integerStack.pushStack(1);
printStack();
integerStack.pushStack(2);
printStack();
integerStack.pushStack(3);
printStack();
integerStack.pushStack(4);
printStack();
integerStack.popStack();
printStack();
integerStack.pushStack(4);
printStack();
integerStack.popStack();
printStack();
System.out.println("大小:" + integerStack.sizeStack());
getTop();
}
3、结果展示
1
2 1
3 2 1
4 3 2 1
出栈操作:4
3 2 1
4 3 2 1
出栈操作:4
3 2 1
大小:3
顶部值:3
4、链栈的实现(java代码)的更多相关文章
- 数据结构之链表、栈和队列 java代码实现
定义抽象节点类Node: package cn.wzbrilliant.datastructure; /** * 节点 * @author ice * */ public abstract class ...
- 队列(链式存储)JAVA代码
publicclassLinkQueue<T>{ //结点类 publicclassNode{ public T data; pub ...
- java与数据结构(6)---java实现链栈
栈之链式存储结构链栈 链栈 栈的链式存储结构成为链栈.链栈是没有头结点,头结点就是栈顶指针top. 代码结构 package list; public interface Stackable;公共接口 ...
- 数据结构——Java实现链栈
一.分析 栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表. 链栈是指采用链式存储结构实现的 ...
- 栈的理解和代码实现(java)
从数据结构的角度来看,其实栈也是线性表.特殊性在于栈和队列的基本操作是线性表操作的子集,栈是操作受限制的线性表. 栈的定义 栈是限定仅在表尾进行插入或者删除操作的线性表.对于一个栈来说,表尾端有着特殊 ...
- java使用链栈实现迷宫求解
java实现链栈在前面有所介绍:http://www.cnblogs.com/lixiaolun/p/4644141.html java实现链栈的代码: package stackapplicatio ...
- java使用链栈实现数制转换
java实现链栈在前面有所介绍:http://www.cnblogs.com/lixiaolun/p/4644141.html 将前面java实现链栈的代码稍作修改: package linkedst ...
- 只用120行Java代码写一个自己的区块链
区块链是目前最热门的话题,广大读者都听说过比特币,或许还有智能合约,相信大家都非常想了解这一切是如何工作的.这篇文章就是帮助你使用 Java 语言来实现一个简单的区块链,用不到 120 行代码来揭示区 ...
- java开发区块链只需150行代码
本文目的是通过java实战开发教程理解区块链是什么.将通过实战入门学习,用Java自学开发一个很基本的区块链,并在此基础上能扩展如web框架应用等.这个基本的java区块链也实现简单的工作量证明系统. ...
- 只用120行Java代码写一个自己的区块链-3挖矿算法
在本系列前两篇文章中,我们向大家展示了如何通过精炼的Java代码实现一个简单的区块链.包括生成块,验证块数据,广播通信等等,这一篇让我们聚焦在如何实现 PoW算法. 大家都无不惊呼比特币.以太坊及其他 ...
随机推荐
- selenium中的setUp,tearDown与setUpClass,tearDownClass的区别
def setUpClass(cls): cls.driver = webdriver.Chrome() cls.driver.maximize_window() def setUp(self): s ...
- C# 发送邮件 并自定义邮件格式
话不多说,直接上代码 //邮件提醒 string Body = @"Dear " + list.Rows[i]["people"] + ":<b ...
- 对博弈活动中蕴含的信息论原理的讨论,以及从熵角度看不同词素抽象方式在WEBSHELL文本检测中的效果区别
1. 从赛马说起 0x1:赛马问题场景介绍 假设在一场赛马中有m匹马参赛,令第i匹参赛马获胜的概率为pi,如果第i匹马获胜,那么机会收益为oi比1,即在第i匹马上每投资一美元,如果赢了,会得到oi美元 ...
- 二.安全NA之ASA基础
一.ASA常用命令 show run interface #查看接口配置 show ip address #查看IP地址 show conn #查看防火墙状态信息,U代表up:I,代表进流量:O,代表 ...
- spring-boot-plus V1.2.1 发布 文件上传下载和静态资源访问
[V1.2.1-RELEASE] 2019.08.21 ⭐️ New Features 文件上传保存到服务器指定目录 文件下载 访问上传的图片等资源 启用项目静态资源访问,可访问static/temp ...
- Java面向对象特性总结
1.面对对象与面对过程的区别 什么是封装?我看到过这样一个例子: 我要用洗衣机洗衣服,只需要按一下开关和洗涤模式就可以了.有必要了解洗衣机内 部的结构吗?有必要碰电动机吗?有必要了解如何通电的吗? 如 ...
- 【原】UILabel 设置了 attributedText 后省略号不显示
在开发中,对于一个 UILabel 我们都会设置 lineBreakMode 属性. 我在开发中就遇到个比较有意思的问题,所以就写了这篇博客,与大家共勉! 对于一个 UILabel ,我先设置了 se ...
- Java中不得不谈的值传递和地址传递
个人的一些认识,希望能对初学Java的你,或者困惑于方法参数传递的你祈祷一丝帮助! 下面是一些作者的个人观点,如果有错,欢迎各位大牛指出错误,灰常感谢您的观看与支持... -------------- ...
- arcgis三维球中加载2000坐标系出现错误(The tiling scheme of this layer is not supported by SceneView)
目前我们国家测绘地理信息的坐标体系基准是国家2000坐标系CGCS2000.各类地图组件如OpenLayers.Mapbox.Cesuim和ArcGIS Javascrip等都主要是支持WGS84(w ...
- javascript JS CryptoJS DES加解密CBC模式与C#DES加解密相同互通
我们只知道不同的语言解密要相互通用,就需要遵循相同的加密方式,然而在具体做技术预研的时候,就发现会遇到很多问题,网上找的资料也是比较片面,所以我踩了坑,并且把解决方案和相关资料源码提供出来,给需要的朋 ...