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代码)的更多相关文章

  1. 数据结构之链表、栈和队列 java代码实现

    定义抽象节点类Node: package cn.wzbrilliant.datastructure; /** * 节点 * @author ice * */ public abstract class ...

  2. 队列(链式存储)JAVA代码

      publicclassLinkQueue<T>{       //结点类     publicclassNode{         public T data;         pub ...

  3. java与数据结构(6)---java实现链栈

    栈之链式存储结构链栈 链栈 栈的链式存储结构成为链栈.链栈是没有头结点,头结点就是栈顶指针top. 代码结构 package list; public interface Stackable;公共接口 ...

  4. 数据结构——Java实现链栈

    一.分析 栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表. 链栈是指采用链式存储结构实现的 ...

  5. 栈的理解和代码实现(java)

    从数据结构的角度来看,其实栈也是线性表.特殊性在于栈和队列的基本操作是线性表操作的子集,栈是操作受限制的线性表. 栈的定义 栈是限定仅在表尾进行插入或者删除操作的线性表.对于一个栈来说,表尾端有着特殊 ...

  6. java使用链栈实现迷宫求解

    java实现链栈在前面有所介绍:http://www.cnblogs.com/lixiaolun/p/4644141.html java实现链栈的代码: package stackapplicatio ...

  7. java使用链栈实现数制转换

    java实现链栈在前面有所介绍:http://www.cnblogs.com/lixiaolun/p/4644141.html 将前面java实现链栈的代码稍作修改: package linkedst ...

  8. 只用120行Java代码写一个自己的区块链

    区块链是目前最热门的话题,广大读者都听说过比特币,或许还有智能合约,相信大家都非常想了解这一切是如何工作的.这篇文章就是帮助你使用 Java 语言来实现一个简单的区块链,用不到 120 行代码来揭示区 ...

  9. java开发区块链只需150行代码

    本文目的是通过java实战开发教程理解区块链是什么.将通过实战入门学习,用Java自学开发一个很基本的区块链,并在此基础上能扩展如web框架应用等.这个基本的java区块链也实现简单的工作量证明系统. ...

  10. 只用120行Java代码写一个自己的区块链-3挖矿算法

    在本系列前两篇文章中,我们向大家展示了如何通过精炼的Java代码实现一个简单的区块链.包括生成块,验证块数据,广播通信等等,这一篇让我们聚焦在如何实现 PoW算法. 大家都无不惊呼比特币.以太坊及其他 ...

随机推荐

  1. 本地(任意)时间戳转化(转换)标准时间格式 js(eg:2019-05-07 17:49:12)

    <script> function getLocalTime(timestamp) { // 如果以秒为单位 // var dateObj = new Date(timestamp * 1 ...

  2. python调用支付宝支付接口

    python调用支付宝支付接口详细示例—附带Django demo代码   项目演示: 一.输入金额 二.跳转到支付宝付款 三.支付成功 四.跳转回自己网站 在使用支付宝接口的前期准备: 1.支付宝公 ...

  3. 记一次mysql数据库失而复得过程

    背景: 由于是自己买的vps搭建的博客,用的是军哥的一键lnmp源码编译安装的,文章也就几篇,对备份并不太重视,想着等服务器快到期的时候备份一下不就行了. 后来在该服务器上测试lnmp分别编译编译安装 ...

  4. 使用charls抓包微信小程序的解决方案(终极解决,各种坑不怕,亲测可用,不服来战!)

    第一步:使用charles进行https抓包 https://www.jianshu.com/p/7a88617ce80b   使用charles进行https抓包 使用Charles进行HTTPS抓 ...

  5. 史上最全面的SignalR系列教程-5、SignalR 实现一对一聊天

    1.概述 通过前面几篇文章 史上最全面的SignalR系列教程-1.认识SignalR 史上最全面的SignalR系列教程-2.SignalR 实现推送功能-永久连接类实现方式 史上最全面的Signa ...

  6. SpringBoot 配置 AOP 打印日志

    在项目开发中,日志系统是必不可少的,用AOP在Web的请求做入参和出参的参数打印,同时对异常进行日志打印,避免重复的手写日志,完整案例见文末源码. 一.Spring AOP AOP(Aspect-Or ...

  7. 自由变形技术(Free-Form Deformation)

    自由变形技术Free-Form Deformation是编辑几何模型的重要手段,它于80年代由Sederberg等人提出,目前许多三维建模软件中都有这种变形算法.自由变形方法在变形过程中并不是直接操作 ...

  8. Mybatis的一级缓存和二级缓存的理解以及用法

    程序中为什么使用缓存? 先了解一下缓存的概念:原始意义是指访问速度比一般随机存取存储器快的一种RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术.对于我们编程来说,所谓的 ...

  9. python基础知识补充

    set 集合 {} 无序 集合天然去重 增 : s.add s.update 迭代添加 删 : s.pop( ) 随机删除 返回删除值 s.clear( ) 清空 获取到的是 set( ) del s ...

  10. 关卡界面中个人信息随解锁关卡的移动(CocosCreator)

    推荐阅读:  我的CSDN  我的博客园  QQ群:704621321 1.功能描述       在关卡很多的游戏里面,我们一般使用滑动来向玩家展示所有的关卡,为了清楚的让用户看到自己当前所在的关卡, ...