1.  
  2. package zy813ture;
  3.  
  4. import java.util.EmptyStackException;
  5.  
  6. public class MyLinkedStack1 {
  7. private Node top = new Node();
  8.  
  9. private class Node {
  10. private Object data;
  11.  
  12. private Node next;
  13. }
  14.  
  15. /*
  16. * public MyLinkedStack1(){
  17. *
  18. * }
  19. */
  20. public boolean isEmpty() {
  21. return top.next == null;
  22. }
  23.  
  24. public Object peek() {// 查看堆栈顶部的对象,但不从堆栈中移除它。
  25. if (top.next == null) {
  26. throw new EmptyStackException();
  27. }
  28. return top.next.data;
  29. }
  30.  
  31. public Object poll() {// 移除堆栈顶部的对象,并作为此函数的值返回该对象
  32. if (top.next == null) {
  33. throw new EmptyStackException();
  34. }
  35. Node node = top.next;// 定义移除的节点node
  36. top.next = node.next;// 移除
  37. // size--;
  38. return node.data;
  39.  
  40. }
  41.  
  42. public Object push(Object item) {// 把项压入堆栈顶部。
  43.  
  44. Node node = new Node();// 定义一个node接收item
  45. node.data = item;
  46.  
  47. node.next = top.next;// 让node连接到top.next
  48.  
  49. top.next = node;
  50.  
  51. // size++;
  52. return item;
  53. }
  54.  
  55. public Object search(Object item) {// 查找对象在堆栈中的位置,以 1 为基数
  56.  
  57. Node node = top.next;
  58. int i = 0;
  59. while (node != null) {
  60. i++;
  61. if (item == null ? item == node.data : item.equals(node.data)) {
  62. return i;
  63. }
  64. node = node.next;
  65. // i++;
  66. }
  67.  
  68. return -1;
  69.  
  70. }
  71.  
  72. public static void main(String[] args) {
  73. MyLinkedStack1 mk = new MyLinkedStack1();
  74. mk.push("ab1");
  75. mk.push("ab2");
  76. mk.push("ab3");
  77. System.out.println(mk.search("ab3"));
  78. // System.out.println(mk.peek());
  79.  
  80. System.out.println(mk.poll());
  81.  
  82. }
  83.  
  84. }

  

LinkedStack的底层实现的更多相关文章

  1. 深入浅出Redis-redis底层数据结构(上)

    1.概述 相信使用过Redis 的各位同学都很清楚,Redis 是一个基于键值对(key-value)的分布式存储系统,与Memcached类似,却优于Memcached的一个高性能的key-valu ...

  2. Objective-C中block的底层原理

    先出2个考题: 1. 上面打印的是几,captureNum2 出去作用域后是否被销毁?为什么? 同样类型的题目: 问:打印的数字为多少? 有人会回答:mutArray是captureObject方法的 ...

  3. nodejs操作arduino入门(javascript操作底层硬件)

    用Javascript来操作硬件早就不是一件稀奇的事情了. 所以作为一名电子专业出身的FE,我也打算尝试一下用js来驱动arduino: 要想操作这些底层硬件,肯定是需要一些工具的,我这里介绍的工具主 ...

  4. 支撑Java NIO 与 NodeJS的底层技术

    支撑Java NIO 与 NodeJS的底层技术 众所周知在近几个版本的Java中增加了一些对Java NIO.NIO2的支持,与此同时NodeJS技术栈中最为人称道的优势之一就是其高性能IO,那么我 ...

  5. 介绍,介绍我的底层支持库 Net.Sz.CFramework

    Net.Sz.CFramework  是我自己的底层库,是经过验证的底层库. 包含: socket tcp协议,socket http协议线程池,线程模型,任务模型,定时器模型,日志模块脚本模块一些辅 ...

  6. iOS - 分析JSON、XML的区别和解析方式的底层是如何实现的(延伸实现原理)

    <分析JSON.XML的区别,JSON.XML解析方式的底层是如何实现的(延伸实现原理)> (一)JSON与XML的区别: (1)可读性方面:基本相同,XML的可读性比较好: (2)可扩展 ...

  7. C#剪切,复制,粘贴底层应用编写

    zz备用复制剪切粘贴的底层应用 /// <summary> /// 复制或剪切文件至剪贴板(方法) /// </summary> /// <param name=&quo ...

  8. 从PHP底层源码去深入理解数组,并用C模拟PHP关联数组(原创)

    PHP是一门入门容易,使用范围广泛的语言,以其灵活性以及web后端开发被很多人熟知,也被很多人戏称“PHP是世界上最好的语言”.本人是一名“忠实”的PHPer,相信用过PHP的程序员都会体会到PHP数 ...

  9. Azure底层架构的初步分析

    之所以要写这样的一篇博文的目的是对于大多数搞IT的人来说,一般都会对这个topic很感兴趣,因为底层架构直接关乎到一个公有云平台的performance,其实最主要的原因是我们的客户对此也非常感兴趣, ...

随机推荐

  1. Servlet -- 中文乱码解决

    请求:对于get和post都有效果 request.setCharacterEncoding("UTF-8"); 相应: 设置服务器输出的编码为UTF-8 response.set ...

  2. docker cmd list

    436 wget -qO- https://get.docker.com/ | sh 437 sudo apt-get update 438 sudo apt-get install -y docke ...

  3. 商品详情页系统的Servlet3异步化实践

    http://jinnianshilongnian.iteye.com/blog/2245925 博客分类: 架构   在京东工作的这一年多时间里,我在整个商品详情页系统(后端数据源)及商品详情页统一 ...

  4. 关于react-native项目在MacBookPro环境下打包成IPA

    苹果开发者打包是需要接入公司的开发者账户里面的.看是企业账户还是什么,具体我不太清楚. 不过打包的方法倒是大同小异. 我们一起新建项目,先跑起来这个项目 npm install -g yarn rea ...

  5. C++ Exception机制

    C++异常机制的执行顺序. 在构造函数内抛出异常 /* * ExceptClass.h * * Created on: 2018年1月2日 * Author: jacket */ #ifndef EX ...

  6. 关于ComponentName组件名称的使用

    ComponentName,顾名思义,就是组件名称,通过调用Intent中的setComponent方法,我们可以打开另外一个应用中的Activity或者服务. 实例化一个ComponentName需 ...

  7. appium-基础搭建,适配,问题,优化,提速

    搭建开发环境,导入testng/log4j/maven 1.配置jdk环境 2.安装appium,下载eclipse-adt,配置appium环境 github.com/getlantern/foru ...

  8. re-download dependencies and 无法下载jar 的解决

    Re-download dependencies and sync project (requires network) 其实就是修改gradle 的path 路径:

  9. springcloud使用zookeeper作为config的配置中心

    https://blog.csdn.net/CSDN_Stephen/article/details/78856323 仓库更新了,本地如何更新: 使用configserver作为配置中心: http ...

  10. A*搜索算法

    先了解一下什么是A*算法. A*搜寻算法,俗称A星算法.A*算法是用于寻找两点之间的最短路径,同时它也是一种静态路网中求解最短路最有效的直搜索方法.这是一种在图形平面上,有多个节点的路径,求出最低通过 ...