【Java】设计数据结构SetOfStacks, 由多个栈组成,并且在前一个栈填满时新建一个栈(未完)

原创 2015年07月10日 14:52:27

设想有一堆盘子,堆太高可能会倒下来。因此,现实生活中,盘子堆到一定高度时,我们就会另外堆一堆盘子。请事先设计数据结构SetOfStacks, 模拟这种行为。

SetOfStacks应该由多个栈组成,并且在前一个栈填满时新建一个栈。此外,SetOfStacks.push() 和SetOfStacks.pop()应该与普通栈的操作方法相同(也就是说,

pop()返回的值,应该跟只有一个栈时的情况一样)。

import java.util.Stack;


public class SetOfStacks {
	class stack {
		public void push(int v);
		public int pop();
	}
	
	//push and pop are both operated from the last stack, just pay attention if the last stack is empty or full
	public void push(int value) {
		Stack<E> last = getLastStack();
		if(last != null && !last.isFull()) {
			last.push(value);
		}
		else {
			Stack stack = new Stack(capacity);
			stack.push(value);
			stacks.add(stack);
		}
	}
	
	public int pop() {
		Stack last = getLastStack();
		int v = last.pop();
		if (last.size == 0 ) {
			stacks.remove(stacks.size() -1);
		}
		return -1;
	}
}


进阶:实现一个popAt(int index)方法,根据指定的子栈,进行pop操作。从栈1弹出元素时,我们需要移除栈2的栈底元素,并将其推到栈1中;随后,将栈3的栈底元素推入栈2,将栈4的元素推入栈3,以此类推

相关文章推荐

多栈运算

多栈运算的算法思想:将多个链栈的栈顶指针放在一个一维指针数组中来统一管理,从而实现同时管理和使用多个栈。650) this.width=650;" src="http://s1.51cto.com/w...

请设计包含min函数的栈,定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素

请设计包含min函数的栈。 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。 要求函数min、push以及pop的时间复杂度都是O(1)。 存储方式采用顺序栈,栈的节点包括数据data...
  • yurhzzu
  • yurhzzu
  • 2015年05月19日 18:03
  • 251

Chapter 3 | Stacks and Queues--实现数据结构模拟一个栈由几个子栈组成,并可以在指定子栈上进行出栈操作

3.3  Imagine a (literal) stack of plates. If the stack gets too high,it might topple. Therefore, in ...

合并一个表格多个竖列的td,主要在后台改数据结构

这种形式的。 jsp部分:                                        河道                                         ...

【数据结构】用两个队列实现一个栈

题目描述: In this assignment, you need to complete Class Stack’s declaration and definition with Templa...

数据结构与算法之—两个栈实现一个队列

曾经的一个面试题,队列是一个异步架构很重要的一个数据结构,其底层的数据结构可是是数组,链表,还可以是栈...

数据结构 用两个栈来模拟一个队列

请利用两个栈S1和S2来模拟一个队列。已知栈的三个操作定义如下:PUSH(ST,x),元素x入栈ST,POP(ST,X),ST栈顶元素出栈并赋给变量x;Sempty(ST),判断ST栈是否为空。那么利...
  • PNAN222
  • PNAN222
  • 2016年04月25日 21:36
  • 510

数据结构::迷宫(一)--栈的一个应用

【前情描述】:我们先来看一张图片:    (在这张图片里我们用“1”来表示墙,用“0”来表示通路。红色方块表示入口点,绿色方块表示出路)  我们要从迷宫的出口开始走找出路,即红色走到绿色,那么怎...
  • lalu58
  • lalu58
  • 2016年12月06日 11:43
  • 4674

【数据结构与算法C】利用两个栈S1S2模拟一个队列,用栈的基本操作实线EnQueue,DeQueue,QueueEmpty

【数据结构与算法C】利用两个栈S1S2模拟一个队列,用栈的基本操作实线EnQueue,DeQueue,QueueEmpty入队列Created with Raphaël 2.1.2开始S2为空出S1入...

【数据结构】栈面试题--两个栈实现一个队列

首先我们必须清楚,栈先进后出,队列先进先出。这道他们各自的特点之后,我们用两个栈来实现一个队列。 下边给出图片: 下边给出代码: 恩...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Java】设计数据结构SetOfStacks, 由多个栈组成,并且在前一个栈填满时新建一个栈(未完)
举报原因:
原因补充:

(最多只允许输入30个字)