文档章节

用栈来实现队列的操作

小强零号
 小强零号
发布于 2015/10/06 20:02
字数 202
阅读 88
收藏 6

java代码:

import java.util.ArrayList;
/*
 * 自定义栈
 */
class MyStack {
	
	private ArrayList<Object> stack;
	
	public MyStack() {
		stack = new ArrayList<Object>();
	}
	
	public Object pop() {
		if(stack.size() == 0) {
			return null;
		}
		return stack.remove(stack.size() - 1);
	}
	
	public void push(Object o) {
		stack.add(o);
	}
	
	public int depth() {
		return stack.size();
	}
}

/*
 *自定义队列
 */
class MyQueue {

	private MyStack myEnqueue, myDequeue;
	
	public MyQueue() {
		myEnqueue = new MyStack();
		myDequeue = new MyStack();
	}
	
	public int length() {
		return myEnqueue.depth() + myDequeue.depth();
	}
	
	public void enqueue(Object o) {
		myEnqueue.push(o);
	}

	public Object dequeue() {
		if(this.length() == 0) {
			System.out.println("the queue is empty !");
			return null;
		}
		
		if(myDequeue.depth() == 0) {
			transfer();
		}
		
		return myDequeue.pop();
	}
	
	public boolean isEmpty() {
		if(this.length() == 0) {
			return true;
		} else {
			return false;
		}
	}
	
	private void transfer() {
		int depth = myEnqueue.depth();
		for(int i = 0; i < depth; i++) {
			myDequeue.push(myEnqueue.pop());
		}
	}
}

/*
 * 测试类
 */
public class Test {
	
	public static void main(String[] args) {
		MyQueue myQueue = new MyQueue();
		
		System.out.println("------入队------");
		myQueue.enqueue(10);
		myQueue.enqueue(20);
		myQueue.enqueue(30);

		System.out.println("队列长度:" + myQueue.length());
		
		System.out.println("------出队------");
		System.out.println("出队:" + myQueue.dequeue());
		System.out.println("出队:" + myQueue.dequeue());
		System.out.println("出队:" + myQueue.dequeue());
		System.out.println("出队:" + myQueue.dequeue());
	}
	
}

© 著作权归作者所有

上一篇: 一道笔试题
下一篇: JAVA多态的理解
小强零号
粉丝 6
博文 31
码字总数 12473
作品 0
长宁
程序员
私信 提问
使用两个栈实现队列,使用两个队列实现栈。

我是一个栈,我的双胞胎弟弟叫队列。我的爸爸是数组,我的妈妈是链表。在上一篇文章中,向你们介绍了我的家族成员对于数据存储方面的能力和特性。还包括如何通过数组和链表来实现栈和队列。 ...

2018/03/25
0
0
数据结构-栈&队列&Deque实现比较

栈 栈: 限定仅在表尾进行插入和删除操作的线性表; 后进先出(LIFO)。 在表尾进行操作,表尾是栈顶;最新进栈的元素在栈底。 栈的ADT Stack_ADT 进栈&出栈 栈 栈的存储结构实现 顺序栈 栈也...

IAM四十二
2017/10/22
0
0
JavaScript数据结构之队栈互搏

今天稍微停下前进的脚步,来看下队栈的左右互搏术。 前两天学习了队列和栈以后,今天就可以试着来用两个栈实现队列的功能 或者 用两个队列来实现栈的功能。 数据结构之---栈实现队列 1. 用两...

snowLu
2018/12/28
0
0
Java数据结构与算法(第四章栈和队列)

本章涉及的三种数据存储类型:栈、队列和优先级队列。 不同类型的结构 程序员的工具 数组是已经介绍过的数据存储结构,和其他结构(链表、树等等)一样,都适用于数据应用中作数据记录。 然而...

小风89
2015/10/24
264
0
Python 实现数据结构中的的栈,队列

栈 栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈...

yongxinz
05/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
6
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
7
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
5
0
OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
1K
11
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
40
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部