LinkedStack的底层实现

package zy813ture;
import java.util.EmptyStackException;
public class MyLinkedStack1 {
private Node top = new Node();
private class Node {
private Object data;
private Node next;
}
/*
* public MyLinkedStack1(){
*
* }
*/
public boolean isEmpty() {
return top.next == null;
}
public Object peek() {// 查看堆栈顶部的对象,但不从堆栈中移除它。
if (top.next == null) {
throw new EmptyStackException();
}
return top.next.data;
}
public Object poll() {// 移除堆栈顶部的对象,并作为此函数的值返回该对象
if (top.next == null) {
throw new EmptyStackException();
}
Node node = top.next;// 定义移除的节点node
top.next = node.next;// 移除
// size--;
return node.data;
}
public Object push(Object item) {// 把项压入堆栈顶部。
Node node = new Node();// 定义一个node接收item
node.data = item;
node.next = top.next;// 让node连接到top.next
top.next = node;
// size++;
return item;
}
public Object search(Object item) {// 查找对象在堆栈中的位置,以 1 为基数
Node node = top.next;
int i = 0;
while (node != null) {
i++;
if (item == null ? item == node.data : item.equals(node.data)) {
return i;
}
node = node.next;
// i++;
}
return -1;
}
public static void main(String[] args) {
MyLinkedStack1 mk = new MyLinkedStack1();
mk.push("ab1");
mk.push("ab2");
mk.push("ab3");
System.out.println(mk.search("ab3"));
// System.out.println(mk.peek());
System.out.println(mk.poll());
}
}
LinkedStack的底层实现的更多相关文章
- 深入浅出Redis-redis底层数据结构(上)
1.概述 相信使用过Redis 的各位同学都很清楚,Redis 是一个基于键值对(key-value)的分布式存储系统,与Memcached类似,却优于Memcached的一个高性能的key-valu ...
- Objective-C中block的底层原理
先出2个考题: 1. 上面打印的是几,captureNum2 出去作用域后是否被销毁?为什么? 同样类型的题目: 问:打印的数字为多少? 有人会回答:mutArray是captureObject方法的 ...
- nodejs操作arduino入门(javascript操作底层硬件)
用Javascript来操作硬件早就不是一件稀奇的事情了. 所以作为一名电子专业出身的FE,我也打算尝试一下用js来驱动arduino: 要想操作这些底层硬件,肯定是需要一些工具的,我这里介绍的工具主 ...
- 支撑Java NIO 与 NodeJS的底层技术
支撑Java NIO 与 NodeJS的底层技术 众所周知在近几个版本的Java中增加了一些对Java NIO.NIO2的支持,与此同时NodeJS技术栈中最为人称道的优势之一就是其高性能IO,那么我 ...
- 介绍,介绍我的底层支持库 Net.Sz.CFramework
Net.Sz.CFramework 是我自己的底层库,是经过验证的底层库. 包含: socket tcp协议,socket http协议线程池,线程模型,任务模型,定时器模型,日志模块脚本模块一些辅 ...
- iOS - 分析JSON、XML的区别和解析方式的底层是如何实现的(延伸实现原理)
<分析JSON.XML的区别,JSON.XML解析方式的底层是如何实现的(延伸实现原理)> (一)JSON与XML的区别: (1)可读性方面:基本相同,XML的可读性比较好: (2)可扩展 ...
- C#剪切,复制,粘贴底层应用编写
zz备用复制剪切粘贴的底层应用 /// <summary> /// 复制或剪切文件至剪贴板(方法) /// </summary> /// <param name=&quo ...
- 从PHP底层源码去深入理解数组,并用C模拟PHP关联数组(原创)
PHP是一门入门容易,使用范围广泛的语言,以其灵活性以及web后端开发被很多人熟知,也被很多人戏称“PHP是世界上最好的语言”.本人是一名“忠实”的PHPer,相信用过PHP的程序员都会体会到PHP数 ...
- Azure底层架构的初步分析
之所以要写这样的一篇博文的目的是对于大多数搞IT的人来说,一般都会对这个topic很感兴趣,因为底层架构直接关乎到一个公有云平台的performance,其实最主要的原因是我们的客户对此也非常感兴趣, ...
随机推荐
- BZOJ 1054: [HAOI2008]移动玩具(bfs)
题面: https://www.lydsy.com/JudgeOnline/problem.php?id=1054 题解: 将每一种状态十六位压成二进制,然后bfs..不解释.. p.s.注意特判初始 ...
- 洛谷 P2158 仪仗队
欧拉函数入门题... 当然如果有兴趣也可以用反演做...类似这题 题意就是求,方阵从左下角出发能看到多少个点. 从0开始给坐标 发现一个点能被看到,那么横纵坐标互质. 然后求欧拉函数的前缀和,* 2 ...
- 用lemon测交互题
题目类型:传统. 答案比较类型:逐行比较类型(忽略多余空格和制表符). 配置:交互. 编译器参数: -o %s %s.* ..\..\data\%s\judge.cpp -Wl,--stack= ju ...
- opencv mat裁剪
主要记录的就是对Mat裁剪后,新Mat指向的内存和原来的Mat共用. OpenCV入门教程(3)-Mat类之选取图像局部区域
- crond守护进程实现定时监控某进程占有内存的大小
1)添加计划任务 crontab -e会使用某个编辑器打开某个文件,然后在内输入需要执行的计划任务,保存后在/var/spool/cron/crontabs/下会出现以用户名命名的文件 2)计划任务如 ...
- ajax多表单序列化
今天在修一个后台接收参数为空值的bug 找了好久才发现原来是form表单合拼参数的时候把参数给搞没了 (我也不知道为什么啊—_—!) //对表单进行Json对象序列化 (function($){ $. ...
- 【清北学堂2018-刷题冲刺】Contest 6
Task 1:子集 [问题描述] 若一个集合S中任意两个元素x和y,都满足x⊕y<min(x, y) ,则称集合S是"好的".其中⊕为按位异或运算符.现在给定一个大小为n ...
- Vue(基础七)_webpack(webpack异步加载原理)
---恢复内容开始--- 一.前言 1.webpack异步加载原理’ 2.webpack.ensure原理 ...
- 【优秀的Sketch插件】PaintCode for Sketch for Mac 1.1
[简介] PaintCode for Sketch 是一款结合了PaintCode和Sketch两款软件强大功能的插件,今天和大家分享最新的1.1版本,支持Sketch 40+版本,这个插件能够让你的 ...
- jenkins配置小结
启动jenkins:javaw -jar -Dhudson.model.DirectoryBrowserSupport.CSP= jenkins.war --httpPort=8001 wget h ...