list实现栈以及队列操作
1.堆栈stack操作:尾进 尾出 或者叫先进后出
//1借助LinkedList 类中的方法实现栈
public class MyStack {
private LinkedList<Object> li=new LinkedList<Object>(); //1构造方法
public MyStack(){ } //2出栈
public Object pop(){
if(isEmpty()){
throw new EmptyStackException();
}
return li.removeFirst();
} //3进栈
public void push(Object obj){ //注意o不要0的区别,不要写成0了
li.addFirst(obj);
} //4清空
public void clear() {
li.clear();
}
//5判断是否为空
public boolean isEmpty(){
return li.isEmpty();
} //6 将对象转换成字符串
public String toString(){
return li.toString();
} //7返回栈口元素
public Object peek(){
if(isEmpty()){
throw new EmptyStackException();
}
return li.peekFirst(); //注意,这里与队列的区别 } public static void main(String[] args) {
MyStack stack=new MyStack();
//进栈
stack.push("a");
stack.push("b");
stack.push("c"); //出栈
System.out.println(stack.pop()); //输出 c //返回栈口元素
System.out.println(stack.peek()); //输出 b }
}
2.队列queue操作:尾进 首出 或者叫先进先出,后进后出
//借助LinkedList 类中的方法实现队列
public class MyQueue {
private LinkedList<Object> li = new LinkedList<Object>(); // 1构造方法
public MyQueue() { } // 2出列
public Object get() {
if (isEmpty()) {
throw new EmptyStackException();
}
return li.removeFirst();
} // 3进列
public void put(Object obj) {
li.addLast(obj);
} // 4清空
public void clear() {
li.clear();
} // 5 返回队列首元素(不删除)
public Object getTop() {
if (isEmpty()) {
throw new EmptyStackException();
}
return li.peekLast(); //注意,这里是peeklaste而不是first
} // 6将对象转换成字符串
public String toString() {
return li.toString();
} // 7判断队列是否为空
public boolean isEmpty() {
return li.isEmpty();
} public static void main(String[] args) {
MyQueue mq = new MyQueue();
// 进列
mq.put("a");
mq.put("b");
mq.put("c"); // 出列
System.out.println(mq.get()); //输出a // 返回对首元素
System.out.println(mq.getTop()); //输出b }
list实现栈以及队列操作的更多相关文章
- [js]数组栈和队列操作
写在前面 在项目中,对数组的操作还是比较常见的,有时候,我们需要模拟栈和队列的特性才能实现需求,这里记录一下这个知识点. 栈 栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一 ...
- JS数据结构的栈和队列操作
数据结构:列表.栈.队列.链表.字典.散列.图和二叉查找树! 排序算法:冒牌.选择.插入.希尔.归并和快速! 查找算法:顺序查找和二分查找 在平时工作中,对数组的操作很是平常,它提供了很多方法使用,比 ...
- 关于JS数组的栈和队列操作
1.js支持重载吗? 虽然js 本身并没有函数重载,但是可以用arguments来模拟重载,函数名相同,参数不同,arguments的length属性,获取参数个数,索引属性获取参数值 2.什么是作用 ...
- 用LinkedList集合演示栈和队列的操作
在数据结构中,栈和队列是两种重要的线性数据结构.它们的主要不同在于:栈中存储的元素,是先进后出:队列中存储的元素是先进先出.我们接下来通过LinkedList集合来演示栈和队列的操作. import ...
- YTU 3001: 判断操作是否合法(栈和队列)
3001: 判断操作是否合法(栈和队列) 时间限制: 1 Sec 内存限制: 128 MB 提交: 4 解决: 2 题目描述 假设以I和O分别表示进栈和出栈操作,栈的初态和终态均为空,进栈和出栈的 ...
- 剑指Offer——Java实现栈和队列的互模拟操作
剑指Offer--Java实现栈和队列的互模拟操作 栈模拟队列 题目:JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 思路:其实就是把队列正常入 ...
- [剑指offer]09用两个栈实现队列插入和删除操作,C++实现
原创博文,转载请注明出处! # 本文为牛客网<剑指offer>刷题笔记 1.题目 # 用两个栈实现队列的插入和删除操作 2.思路 栈服从先入后出的原则处理数据,队列服从先入先出的原则处理数 ...
- C数据结构(文件操作,随机数,排序,栈和队列,图和遍历,最小生成树,最短路径)程序例子
文件操作 文件打开方式 意义 ”r” 只读打开一个文本文件,只允许读数据 ”w” 只写打开或建立一个文本文件,只允许写数据 ”a” 追加打开一个文本 ...
- [ACM训练] 算法初级 之 数据结构 之 栈stack+队列queue (基础+进阶+POJ 1338+2442+1442)
再次面对像栈和队列这样的相当基础的数据结构的学习,应该从多个方面,多维度去学习. 首先,这两个数据结构都是比较常用的,在标准库中都有对应的结构能够直接使用,所以第一个阶段应该是先学习直接来使用,下一个 ...
随机推荐
- java游戏服务器 建造者模式
这里的具体的建造者ConcreteBuilder可以多个 这里我们以建造汽车为例: 假设汽车需要:方向盘.汽车壳.还有四个轮子 ---------这三样才能跑起来 如果你因为粗心漏了其中的某个建造过 ...
- 【.NET】关于.NET前后台提示框的那点事
前言 关于提示框,或多或少都用到过,提示框常见方式两种:js原生alert() 和 div模拟弹层:下面以一个常见的需求业务场景来展现提示框的那点事: 正文内容 客户:需求方: 小白:实现方(全权负责 ...
- C# WPF Border控件总结
Border控件不是一个布局面板,而是一个非常便于使用的元素,经常与布局面板一起使用.所以,在继续介绍其他布局面板之前,现在先介绍一下Border控件是有意义的. Border类非常简单.它只能包含一 ...
- webdriervAPI(下载文件)
from selenium import webdriver driver = webdriver.Chorme() driver.get("http://www.baidu.co ...
- dll的封装和使用
背景 在windows平台下,要实现函数的封装,一般采用的是dll动态库的形式 实现了函数的封装就意味着实现过程的隐藏 可以实现跨平台和跨语言的使用 实施步骤 生成dll动态库 在VS中生成新项目,应 ...
- [转帖]IBM收购红帽价格是多少?是否会形成垄断企业?会存在什么不安因素?
http://www.techweb.com.cn/it/2019-07-10/2743776.shtml 国产的linux 用centos源的 如何是好呢.. 蓝色巨人IBM官方宣布,已经正式完成对 ...
- python-day38(正式学习)
目录 线程 线程开启的两种方式 1 2 子线程和子进程的创建速度 子线程共享资源 线程的join方法 守护线程 线程其他用法 线程 线程开启的两种方式 1 from threading import ...
- md5sum、tailf命令
一.md5sum:计算和校验文件的md5值 语法 md5sum [选项] ... [文件] ... 描述 打印或检查MD5(128位)校验和.没有FILE或FILE为 ...
- WPF贝塞尔曲线示例
WPF贝塞尔曲线示例 贝塞尔曲线在之前使用SVG的时候其实就已经有接触到了,但应用未深,了解的不是很多,最近在进行图形操作的时候需要用到贝塞尔曲线,所以又重新来了解WPF中贝塞尔曲线的绘制. 一阶贝塞 ...
- SQL----Scalar 函数
UCASE() 函数 UCASE 函数把字段的值转换为大写. SQL UCASE() 语法 SELECT UCASE(column_name) FROM table_name SQL UCASE() ...