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算法. 大家都无不惊呼比特币.以太坊及其他 ...
随机推荐
- python数据类型图解
- 解决Springboot整合ActiveMQ发送和接收topic消息的问题
环境搭建 1.创建maven项目(jar) 2.pom.xml添加依赖 <parent> <groupId>org.springframework.boot</group ...
- Yii2 登录报错
当用数据库登录系统报如下错误时 PHP Recoverable Error – yii\base\ErrorException Argument 1 passed to yii\web\User::l ...
- error LNK2001: unresolved external symbol "__declspec(dllimport)
作为C++的小白,出现这个错误,是最头痛的.针对这种问题,我搜了网上的相关答案,很多都是在教Project ---> Settings中改动相关设置.我改了之后,问题依旧没有解决.后面查了这种问 ...
- idea实现第一个springboot程序
1.环境准备 JDK:1.8 Apache Maven: 3.6.1 IntelliJ IDEA 2019.1.3 x64 SpringBoot 1.5.9.RELEASE:1.5.9: 1.1.MA ...
- 第一个基于ArcGIS的Android应用
使用Android Studio创建第一个工程 打开Android Studio,新建工程.在Application name处填写项目名称,company domain是公司地址,将来作为包名,点 ...
- python程序中使用MySQL数据库
目录 python程序中使用MySQL数据库 1 pymysql连接数据库 2 sql 注入 3 增删改查操作 4 pymysql使用总结 python程序中使用MySQL数据库 1.python中使 ...
- Spring框架入门之AOP
Spring框架入门之AOP 一.Spring AOP简单介绍 AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented ...
- MSIL实用指南-加载和保存参数
本篇讲解怎么加载和保存参数,以及参数起始序号的确定. 参数的加载加载参数的指令是Ldarg.Ldarg_S.Ldarg_0.Ldarg_1.Ldarg_2.Ldarg_3.Ldarg_0是加载第0个参 ...
- spss数据分析可以被人工智能替换吗
作为一名需要对课题进行研究的大学生,我在日常学习中经常需要用到spss,虽然老师上课已经初步教了我如何用这个软件,然而,在使用过程中我还是遇到了许多问题.具体来说,就是这个软件在很多地方都不够与时俱进 ...